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

rmccabe at sourceware.org rmccabe at sourceware.org
Wed Aug 2 17:27:18 UTC 2006


CVSROOT:	/cvs/cluster
Module name:	conga
Changes by:	rmccabe at sourceware.org	2006-08-02 17:27:18

Modified files:
	luci/cluster   : form-macros 

Log message:
	i hate to commit this, because it's bound to cause rejects for somebody, but i had to reformat the file in order to be able to read and work with it

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-macros.diff?cvsroot=cluster&r1=1.15&r2=1.16

--- conga/luci/cluster/form-macros	2006/08/01 15:43:19	1.15
+++ conga/luci/cluster/form-macros	2006/08/02 17:27:18	1.16
@@ -1,91 +1,126 @@
 <html>
-  <head>
-    <title tal:content="template/title">The title</title>
-  </head>
-  <body>
-    
-  <div metal:define-macro="entry-form">
-   <h2>Entry Form</h2>
-  </div>
-  <div metal:define-macro="busywaitpage">
-   <table>
-    <tr>
-     <td>
-      <h2>Please be patient - this cluster's configuration is being modified.</h2>
-     </td>
-    </tr>
-    <tr>
-     <td>
-      <img src="100wait.gif"/>
-     </td>
-    </tr>
-    <tr>
-     <td>
-     <h2><span tal:content="isBusy/flag_desc"/></h2>
-     </td>
-    </tr>
-   </table>
-    
-  </div>
-
-  <div metal:define-macro="clusters-form">
-     <table>
-      <tbody>
-       <span tal:repeat="clu clusystems">
-        <span tal:define="ragent python:here.getRicciAgent(clu)">
-         <span tal:define="global stat python:here.getClusterStatus(ragent)"/>
-         <span tal:define="global cstatus python:here.getClustersInfo(stat,request)"/>
-        </span>
-       <tr width="100%" STYLE="border-bottom: blue 3px groove;">
-        <td width="100%" STYLE="border-bottom: #8cacbb 3px solid;">
-         <table width="800px">
-          <tr STYLE="padding:10px;margin:10px;border-width:0px;">
-            <span tal:condition="python:cstatus['running'] == 'true'">
-            <td STYLE="padding:10px;margin:10px;border-width:0px;"><h1 STYLE="border:0px;">Cluster Name: <a href="" tal:attributes="href cstatus/clucfg"><font color="green"><span tal:content="cstatus/clusteralias"/></font></a></h1></td>
-            </span>
-            <span tal:condition="python:cstatus['running'] == 'false'">
-            <td STYLE="padding:10px;margin:10px;border-width:0px;"><h1 STYLE="border:0px;">Cluster Name: <a href="" tal:attributes="href cstatus/clucfg"><font color="red"><span tal:content="cstatus/clusteralias"/></font></a></h1></td>
-            </span>
-            <td STYLE="margin:10px"><form METHOD=POST onSubmit="return dropdown(this.gourl)">
-              <SELECT NAME="gourl">
-               <span tal:condition="python:cstatus['running'] == 'true'">
-               <OPTION VALUE="">This cluster is running...</OPTION>
-               <OPTION VALUE=""><font color="red">Stop this cluster</font></OPTION>
-               <OPTION VALUE="">Restart this cluster</OPTION>
-               </span>
-               <span tal:condition="python:cstatus['running'] == 'false'">
-               <OPTION VALUE="">This cluster is stopped...</OPTION>
-               <OPTION VALUE=""><font color="green">Start this cluster</font></OPTION>
-               <OPTION VALUE="">Restart this cluster</OPTION>
-               </span>
-              </SELECT>
-              <INPUT TYPE=SUBMIT VALUE="Go"/>
-             </FORM>
-            </td>
-       </tr>
-       <tr STYLE="padding:10px;margin:10px">
-            <td STYLE="padding:10px;margin:10px"><h2 STYLE="border:0px;">Status:  <i><span tal:content="cstatus/status"/></i></h2></td>
-            <td STYLE="padding:10px;margin:10px"><h2 STYLE="border:0px;">Total Cluster Votes:  <i><span tal:content="cstatus/votes"/></i></h2></td>
-            <td STYLE="padding:10px;margin:10px"><h2 STYLE="border:0px;">Minimum Required Quorum:  <i><span tal:content="cstatus/minquorum"/></i></h2></td>
-       </tr>
-       <tr STYLE="padding:10px;margin:10px"><td STYLE="padding:10px;margin:10px"><h2 STYLE="border:0px;">Nodes:</h2>  <ul>
-          <span tal:repeat="nd cstatus/currentnodes">
-           <span tal:condition="python:nd['status'] == '0'"><li STYLE="list-style-image: url(small_node_active.png);"><a href="" tal:attributes="href nd/configurl"><font color="green"><span tal:content="nd/nodename"/></font></a></li></span>           <span tal:condition="python:nd['status'] == '1'"><li STYLE="list-style-image: url(small_node_inactive.png);"><a href="" tal:attributes="href nd/configurl"><font color="red"><span tal:content="nd/nodename"/></font></a></li></span>           <span tal:condition="python:nd['status'] == '2'"><li STYLE="list-style-image: url(small_node_unknown.png);"><a href="" tal:attributes="href nd/configurl"><font color="gray"><span tal:content="nd/nodename"/></font></a></li></span>          </span>
-           </ul></td>
-           <td STYLE="width:30%;text-align:right"><h3>Currently Hosting: </h3><ul><span tal:repeat="svc cstatus/currentservices"><li><a href="" tal:attributes="href svc/svcurl"><span tal:content="svc/name"/></a></li></span></ul></td>
-       </tr>
-        
-        </span>
-      </tbody>
-     </table>
-  </div>
-
-  <div metal:define-macro="cluster-form">
-   <h2>Cluster Form</h2>
-  </div>
 
+<head>
+	<title tal:content="template/title">The title</title>
+</head>
+
+<body>
+
+<div metal:define-macro="entry-form">
+	<h2>Entry Form</h2>
+</div>
+
+<div metal:define-macro="busywaitpage">
+	<table>
+		<tr><td>
+			<h2>Please be patient - this cluster's configuration is being modified.</h2>
+		</td></tr>
+		<tr><td>
+			<img src="100wait.gif"/>
+		</td></tr>
+		<tr><td>
+			<h2><span tal:content="isBusy/desc" /></h2>
+		</td></tr>
+
+		<tr><td>
+			<h2><span tal:replace="isBusy/desc"/></h2>
+		</td></tr>
+	</table>
+</div>
+
+<div metal:define-macro="clusters-form">
+	<table>
+		<tbody>
+			<tr width="100%" style="border-bottom: blue 3px groove;"
+				tal:repeat="clu clusystems">
+
+				<td width="100%" style="border-bottom: #8cacbb 3px solid;"
+					tal:define="ragent python:here.getRicciAgent(clu);
+							global stat python:here.getClusterStatus(ragent);
+							global cstatus python:here.getClustersInfo(stat,request);">
+
+					<table width="800px">
+						<tr style="padding:10px;margin:10px;border-width:0px;">
+							<td tal:condition="python:cstatus['running'] == 'true'" style="padding:10px;margin:10px;border-width:0px;">
+								<h1 style="border:0px;">Cluster Name: <a href="" tal:attributes="href cstatus/clucfg"><font color="green"><span tal:content="cstatus/clusteralias"/></font></a></h1>
+							</td>
+
+							<td tal:condition="python:cstatus['running'] != 'true'" style="padding:10px;margin:10px;border-width:0px;">
+								<h1 style="border:0px;">Cluster Name: <a href="" tal:attributes="href cstatus/clucfg"><font color="red"><span tal:content="cstatus/clusteralias"/></font></a></h1>
+							</td>
+
+							<td style="margin:10px">
+								<form method="post" onSubmit="return dropdown(this.gourl)">
+									<select name="gourl" tal:condition="python:cstatus['running'] == 'true'">
+										<option value="">This cluster is running...</option>
+										<option value=""><font color="red">Stop this cluster</font></option>
+										<option value="">Restart this cluster</option>
+									</select>
+									<select name="gourl" tal:condition="python:cstatus['running'] != 'true'">
+										<option value="">This cluster is stopped...</option>
+										<option value=""><font color="green">Start this cluster</font></option>
+										<option value="">Restart this cluster</option>
+									</select>
+									<input type="submit" value="Go"/>
+								</form>
+							</td>
+						</tr>
+
+						<tr style="padding:10px;margin:10px">
+							<td style="padding:10px;margin:10px">
+								<h2 style="border:0px;">Status: <i><span tal:content="cstatus/status"/></i></h2>
+							</td>
+
+							<td style="padding:10px;margin:10px">
+								<h2 style="border:0px;">Total Cluster Votes: <i><span tal:content="cstatus/votes"/></i></h2>
+							</td>
+
+							<td style="padding:10px;margin:10px">
+								<h2 style="border:0px;">Minimum Required Quorum: <i><span tal:content="cstatus/minquorum"/></i></h2>
+							</td>
+						</tr>
+
+						<tr style="padding:10px;margin:10px">
+							<td style="padding:10px;margin:10px">
+								<h2 style="border:0px;">Nodes:</h2>
+								<ul>
+								<tal:block tal:repeat="nd cstatus/currentnodes">
+									<li style="list-style-image: url(small_node_active.png);"
+										tal:condition="python:nd['status'] == '0'">
+										<a href="" tal:attributes="href nd/configurl"><font color="green"><span tal:content="nd/nodename"/></font></a>
+									</li>
+									<li style="list-style-image: url(small_node_inactive.png);" tal:condition="python:nd['status'] == '1'">
+										<a href="" tal:attributes="href nd/configurl"><font color="red"><span tal:content="nd/nodename"/></font></a>
+									</li>
+									<li style="list-style-image: url(small_node_unknown.png);" tal:condition="python:nd['status'] == '2'">
+										<a href="" tal:attributes="href nd/configurl"><font color="gray"><span tal:content="nd/nodename"/></font></a>
+									</li>
+								</tal:block>
+								</ul>
+							</td>
+
+							<td style="width:30%;text-align:right">
+								<h3>Currently Hosting: </h3>
+								<ul>
+									<li tal:repeat="svc cstatus/currentservices">
+										<a href="" tal:attributes="href svc/svcurl"><span tal:content="svc/name"/></a>
+									</li>
+								</ul>
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</tbody>
+	</table>
+</div>
+
+<div metal:define-macro="cluster-form">
+	<h2>Cluster Form</h2>
+</div>
 
-  <div metal:define-macro="clusteradd-form" style="margin-left: 1em">
+
+<div metal:define-macro="clusteradd-form" style="margin-left: 1em">
 	<script type="text/javascript" src="/luci/homebase/homebase_common.js">
 	</script>
 	<script type="text/javascript" src="/luci/homebase/validate_cluster_add.js">
@@ -231,323 +266,428 @@
 			<input type="button" class="hbSubmit" name="Submit" value="Submit" onClick="validateForm(document.adminform);" />
 		</div>
 	</form>
-  </div>
-  <div metal:define-macro="clusterconfig-form">
-  <!-- <span tal:define="global ricci_agent python:here.getRicciAgentForCluster(request)"/> -->
-  <span tal:define="global clusterinfo python:here.getClusterInfo(modelb, request)"/> 
-   <form name="basecluster" action="" method="get" tal:attributes="action clusterinfo/basecluster_url">
-    <table id="systemsTable" class="systemsTable" border="0" cellspacing="0">
-     <thead class="systemsTable"> 
-      <tr class="systemsTable"><td class="systemsTable" colspan="1">
-         <div class="systemsTableTop">
-           <strong>General Properties</strong>
-         </div>
-       </td></tr>
-      </thead>
-      <tbody class="systemsTable">
-       <tr class="systemsTable">
-        <td class="systemsTable">Cluster Name</td>
-        <td class="systemsTable">
-         <input type="text"  name="cluname" value="" tal:attributes="value clusterinfo/clustername"/>
-        </td>
-       </tr>
-       <tr class="systemsTable">
-        <td class="systemsTable">Configuration Version</td>
-        <td class="systemsTable">
-         <input type="text" name="cfgver" size="5" value="" tal:attributes="value clusterinfo/config_version"/>
-        </td>
-       </tr>
-      </tbody>
-      <tfoot class="systemsTable">
-       <tr class="systemsTable">
-        <td class="systemsTable" colspan="2">
-         <div class="systemsTableEnd">
-          <input type="submit" value="Apply"/>
-         </div>
-        </td>
-       </tr>
-      </tfoot>
-    </table>
-  </form>
-  <hr/>
-   <form name="fencedaemon" action="" method="get" tal:attributes="action clusterinfo/fencedaemon_url">
-    <table id="systemsTable" class="systemsTable" border="0" cellspacing="0">
-     <thead class="systemsTable"> 
-      <tr class="systemsTable"><td class="systemsTable" colspan="1">
-         <div class="systemsTableTop">
-           <strong>Fence Daemon Properties</strong>
-         </div>
-       </td></tr>
-      </thead>
-      <tbody class="systemsTable">
-       <tr class="systemsTable">
-        <td class="systemsTable">Post Fail Delay</td>
-        <td class="systemsTable">
-         <input type="text" name="post_fail_delay" value="" tal:attributes="value clusterinfo/pfd"/>
-        </td>
-       </tr>
-       <tr class="systemsTable">
-        <td class="systemsTable">Post Join Delay</td>
-        <td class="systemsTable">
-         <input type="text" name="post_join_delay" value="" tal:attributes="value clusterinfo/pjd"/>
-        </td>
-       </tr>
-      </tbody>
-      <tfoot class="systemsTable">
-        <tr class="systemsTable">
-         <td class="systemsTable" colspan="2">
-          <div class="systemsTableEnd">
-           <input type="submit" value="Apply"/>
-          </div>
-         </td></tr>
-      </tfoot>
-     </table>
-  </form>
-  <hr/>
-   <form name="multicast" action="" method="get" tal:attributes="action clusterinfo/multicast_url">
-    <table id="systemsTable" class="systemsTable" border="0" cellspacing="0">
-     <thead class="systemsTable"> 
-      <tr class="systemsTable"><td class="systemsTable" colspan="1">
-         <div class="systemsTableTop">
-           <strong>Multicast Configuration</strong>
-         </div>
-       </td></tr>
-      </thead>
-      <tbody class="systemsTable">
-        <tr class="systemsTable">
-         <td class="systemsTable"><input type="radio" name="mcast" value="False" checked="" tal:attributes="checked python:clusterinfo['is_mcast'] == 'False'"/><b> Let cluster choose the multicast address</b>
-         </td>
-        </tr>
-        <tr class="systemsTable">
-         <td class="systemsTable"><input type="radio" name="mcast" value="True"/> <b> I prefer to choose the multicast address</b>
-         </td>
-        </tr>
-       <tr class="systemsTable">
-        <td class="systemsTable" colspan="2"><input type="text" name="mcast_address" value="" tal:attributes="value clusterinfo/mcast_addr"/>
-        </td>
-       </tr>
-      </tbody>
-      <tfoot class="systemsTable">
-       <tr class="systemsTable"><td class="systemsTable" colspan="2">
-         <div class="systemsTableEnd">
-          <input type="submit" value="Apply"/>
-         </div>
-       </td></tr>
-      </tfoot>
-     </table>
-  </form>
-  <hr/>
-   <form name="quorum_partition" action="" method="get" tal:attributes="action clusterinfo/quorumd_url">
-    <table id="systemsTable" class="systemsTable" border="0" cellspacing="0">
-     <thead class="systemsTable"> 
-      <tr class="systemsTable"><td class="systemsTable" colspan="1">
-         <div class="systemsTableTop">
-           <strong>Quorum Partition Configuration</strong>
-         </div>
-       </td></tr>
-      </thead>
-      <tbody class="systemsTable">
-        <tr class="systemsTable">
-         <td class="systemsTable"><input type="radio" name="quorumd" value="False" checked="" tal:attributes="checked python:clusterinfo['is_quorumd'] == 'False'"/><b> Do not use a Quorum Partition</b>
-         </td>
-        </tr>
-        <tr class="systemsTable">
-         <td class="systemsTable"><input type="radio" name="quorumd" value="True"/> <b> I prefer to use a Quorum Partition</b>
-         </td>
-        </tr>
-       <tr class="systemsTable">
-        <td class="systemsTable" colspan="2">Interval: <input type="text" name="interval" value="" tal:attributes="value clusterinfo/interval"/>
-        </td>
-       </tr>
-       <tr class="systemsTable">
-        <td class="systemsTable" colspan="2">Votes: <input type="text" name="votes" value="" tal:attributes="value clusterinfo/votes"/>
-        </td>
-       </tr>
-       <tr class="systemsTable">
-        <td class="systemsTable" colspan="2">TKO: <input type="text" name="tko" value="" tal:attributes="value clusterinfo/tko"/>
-        </td>
-       </tr>
-       <tr class="systemsTable">
-        <td class="systemsTable" colspan="2">Minimum Score: <input type="text" name="min_score" value="" tal:attributes="value clusterinfo/min_score"/>
-        </td>
-       </tr>
-       <tr class="systemsTable">
-        <td class="systemsTable" colspan="2">Device: <input type="text" name="device" value="" tal:attributes="value clusterinfo/device"/>
-        </td>
-       </tr>
-       <tr class="systemsTable">
-        <td class="systemsTable" colspan="2">Label: <input type="text" name="label" value="" tal:attributes="value clusterinfo/label"/>
-        </td>
-       </tr>
-      </tbody>
-     </table>
-    <table id="systemsTable" class="systemsTable" border="0" cellspacing="0">
-     <thead class="systemsTable"> 
-      <tr class="systemsTable"><td class="systemsTable" colspan="1">
-         <div class="systemsTableTop">
-           <strong>Heuristics</strong>
-         </div>
-       </td></tr>
-      <tr class="systemsTable">
-        <th class="systemsTable">
-         <div class="systemsTableTop">
-           Name
-         </div>
-       </th>
-        <th class="systemsTable">
-         <div class="systemsTableTop">
-           Path to Program
-         </div>
-       </th>
-        <th class="systemsTable">
-         <div class="systemsTableTop">
-           Interval
-         </div>
-       </th>
-        <th class="systemsTable">
-         <div class="systemsTableTop">
-           Score
-         </div>
-       </th>
-      </tr>
-      </thead>
-    
-      <tbody class="systemsTable">
-      <span tal:define="global heuristics clusterinfo/hlist"/>
-      <span tal:repeat="heuristic heuristics">
-       <tr class="systemsTable">
-        <td class="systemsTable"><input type="text" name="hname" value="" tal:attributes="value heuristic/hname"/>
-        </td>
-        <td class="systemsTable"><input type="text" name="hinterval" value="" tal:attributes="value heuristic/hinterval"/>
-        </td>
-        <td class="systemsTable" colspan="2"><input type="text" name="hprog" value="" tal:attributes="value heuristic/hprog"/>
-        </td>
-        <td class="systemsTable"><input type="text" name="hscore" value="" tal:attributes="value heuristic/hscore"/>
-        </td>
-       </tr>
-      </span>
-     </tbody>
-      <tfoot class="systemsTable">
-       <tr class="systemsTable"><td class="systemsTable" colspan="2">
-         <div class="systemsTableEnd">
-          <input type="submit" value="Apply"/>
-         </div>
-       </td></tr>
-      </tfoot>
-    </table>
-   </form>
-  </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)"/>
-  </div>
-  <div metal:define-macro="node-form">
-     <span tal:define="global ricci_agent python:here.getRicciAgentForCluster(request)"/>
-     <span tal:define="global nodestatus python:here.getClusterStatus(ricci_agent)"/>
-       <span tal:define="global nodeinfo python:here.getNodeInfo(modelb, nodestatus, request)"/>
-    <!-- First table row is status icon, name, and dropdown -->>
-    <table>
-     <span tal:condition="python:nodeinfo['nodestate'] == '0'">
-      <tr>
-        <td><img src="node_active.png"/></td><td STYLE="horizontal-align:left;"><table><tr><td><h2 STYLE="border:0px;">Node name: <span tal:content="nodeinfo/nodename"/></h2></td></tr>
-        <tr STYLE="horizontal-align:left;"><td><h2 STYLE="border:0px;">Status: <font color="green">Cluster member</font></td></tr></table></td>
-          <td STYLE="margin:15px; vertical-align:top"><form METHOD=POST onSubmit="return dropdown(this.gourl)">
-           <SELECT NAME="gourl">
-            <OPTION VALUE="">Choose a Task...</OPTION>
-            <OPTION VALUE="" tal:attributes="VALUE nodeinfo/jl_url">Have node leave cluster</OPTION>
-            <OPTION VALUE="">----------</OPTION>
-            <OPTION VALUE="" tal:attributes="VALUE nodeinfo/fence_url">Fence this node</OPTION>
-            <OPTION VALUE="" tal:attributes="VALUE nodeinfo/reboot_url">Reboot this node</OPTION>
-            <OPTION VALUE="">----------</OPTION>
-            <OPTION VALUE="" tal:attributes="VALUE nodeinfo/delete_url">Delete this node</OPTION>
-          </SELECT>
-          <INPUT TYPE=SUBMIT VALUE="Go"/>
-          </FORM>
-         </td>
-      </tr>
-                                                                                
-     </span>
-     <span tal:condition="python:nodeinfo['nodestate'] == '1'">
-      <tr><td><img src="node_inactive.png"/></td><td><table><tr><td><h2 STYLE="border:0px;">Node name: <span tal:content="nodeinfo/nodename"/></h2></td></tr>
-          <tr><td STYLE="margin:10px;padding:10px;"><h2 STYLE="border:0px;">Status: <font color="red">Currently not a cluster participant</font></td></tr></table></td>
-          <td STYLE="margin:15px;vertical-align:top;"><form METHOD=POST onSubmit="return dropdown(this.gourl)">
-           <SELECT NAME="gourl">
-            <OPTION VALUE="">Choose a Task...</OPTION>
-            <OPTION VALUE="" tal:attributes="VALUE nodeinfo/jl_url">Have node join cluster</OPTION>
-            <OPTION VALUE="">----------</OPTION>
-            <OPTION VALUE="" tal:attributes="VALUE nodeinfo/fence_url">Fence this node</OPTION>
-            <OPTION VALUE="" tal:attributes="VALUE nodeinfo/reboot_url">Reboot this node</OPTION>
-            <OPTION VALUE="">----------</OPTION>
-            <OPTION VALUE="" tal:attributes="VALUE nodeinfo/delete_url">Delete this node</OPTION>
-          </SELECT>
-          <INPUT TYPE=SUBMIT VALUE="Go"/>
-          </FORM>
-         </td>
-      </tr>
-                                                                                
-     </span>
-     <span tal:condition="python:nodeinfo['nodestate'] == '2'">
-      <tr><td><img src="node_unknown.png"/></td><td><h2 STYLE="border:0px;">Node name: <span tal:content="nodeinfo/nodename"/></h2></td><td STYLE="margin:10px;padding:10px;"><h2 STYLE="border:0px;">Status: <font color="gray">This node is not responding</font></td></tr>
-     </span>
-      </table>
-      <table>
-      <tr><td><table border="1px"><tr><th>Cluster daemon</th><th>Enabled at start-up</th><th>Currently running</th></tr>
-                      <span tal:repeat="demon nodeinfo/d_states">
-                       <tr><td><span tal:content="demon/name"/></td><td><span tal:content="demon/enabled"/><a href="" STYLE="text-align:right;">(Change)</a></td><td><span tal:content="demon/running"/></td></tr>
-                      </span>
-               </table>
-    <!-- second row is daemon macro and failoverdom membership -->
-    <!-- third row is fencing macro -->
-    <!-- fourth row is logging -->
-  </div>
-  <div metal:define-macro="nodes-form">
-    <table>
-     <span tal:define="global ricci_agent python:here.getRicciAgentForCluster(request)"/>
-     <span tal:define="global status python:here.getClusterStatus(ricci_agent)"/>
-     <span tal:define="global nds python:here.getNodesInfo(modelb,status,request)"/>
-     <span tal:repeat="nd nds">
-     <tr width="100%" STYLE="border-bottom: blue 3px groove;">
-      <td width="100%" STYLE="border-bottom: #8cacbb 3px solid;">
-       <table width="800px">
-        <tr STYLE="padding:10px;margin:10px;border-width:0px;"><td STYLE="padding:10px;margin:10px;border-width:0px;"><h1 STYLE="border:0px;">Node Name: <span tal:content="nd/nodename"/></h1></td>
-            <td STYLE="margin:10px"><form METHOD=POST onSubmit="return dropdown(this.gourl)">
-              <SELECT NAME="gourl">
-               <OPTION VALUE="">Choose a Task...</OPTION>
-               <OPTION VALUE="" tal:attributes="VALUE nd/configurl">Configure</OPTION>
-               <OPTION VALUE="">Have node leave cluster</OPTION>
-               <OPTION VALUE="">Stop all cluster services</OPTION>
-               <OPTION VALUE="">----------</OPTION>
-               <OPTION VALUE="">Fence this node</OPTION>
-               <OPTION VALUE="">Reboot this node</OPTION>
-               <OPTION VALUE="">----------</OPTION>
-               <OPTION VALUE="">Delete</OPTION>
-              </SELECT>
-              <INPUT TYPE=SUBMIT VALUE="Go"/>
-             </FORM>
-            </td>
-            <td STYLE="width:30%; text-align:right;"><h3><a href="" tal:attributes="href nd/fenceurl">Manage Fencing for this Node</a></h3></td>
-       </tr>
-       <tr STYLE="padding:10px;margin:10px"><td STYLE="padding:10px;margin:10px"><h2 STYLE="border:0px;">Status:  <i><span tal:content="nd/status"/></i></h2></td></tr>
-       <tr STYLE="padding:10px;margin:10px"><td STYLE="padding:10px;margin:10px"><h2 STYLE="border:0px;">Currently Hosting:</h2>  <ul><span tal:repeat="svc nd/currentservices"><li><a href="" tal:attributes="href svc/svcurl"><span tal:content="svc/servicename"/></a></li></span></ul></td>
-           <td STYLE="width:30%;text-align:right"><h3>Failover Domain Membership: </h3><ul><span tal:repeat="fdom nd/fdoms"><li><a href="" tal:attributes="href fdom/fdomurl"><span tal:content="fdom/name"/></a></li></span></ul></td>
-       </tr>
-      </table>
-        </tr>
-     
-     </span>
-     </table>
-  </div>
-  <div metal:define-macro="nodelist-form">
-   <h2>Node List Form</h2>
-  </div>
-  <div metal:define-macro="nodegrid-form">
-   <h2>Node Grid Form</h2>
-  </div>
-  <div metal:define-macro="nodeconfig-form">
-   <h2>Node Configuration Form</h2>
-  </div>
+</div>
+
+<div metal:define-macro="clusterconfig-form">
+	<tal:comment tal:replace="nothing">
+		<span tal:define="global ricci_agent python:here.getRicciAgentForCluster(request)"/>
+	</tal:comment>
+
+	<form name="basecluster" action="" method="get"
+		tal:attributes="action clusterinfo/basecluster_url"
+		tal:define="global clusterinfo python:here.getClusterInfo(modelb, request)"> 
+
+	<table id="systemsTable" class="systemsTable" border="0" cellspacing="0">
+		<thead class="systemsTable"> 
+			<tr class="systemsTable"><td class="systemsTable" colspan="1">
+				<div class="systemsTableTop">
+					<strong>General Properties</strong>
+				</div>
+			</td></tr>
+		</thead>
+
+		<tbody class="systemsTable">
+			<tr class="systemsTable">
+				<td class="systemsTable">Cluster Name</td>
+				<td class="systemsTable">
+					<input type="text" name="cluname" value="" tal:attributes="value clusterinfo/clustername"/>
+				</td>
+			</tr>
+			<tr class="systemsTable">
+				<td class="systemsTable">Configuration Version</td>
+				<td class="systemsTable">
+					<input type="text" name="cfgver" size="5" value="" tal:attributes="value clusterinfo/config_version"/>
+				</td>
+			</tr>
+		</tbody>
+
+		<tfoot class="systemsTable">
+			<tr class="systemsTable">
+				<td class="systemsTable" colspan="2">
+					<div class="systemsTableEnd">
+						<input type="submit" value="Apply"/>
+					</div>
+				</td>
+			</tr>
+		</tfoot>
+	</table>
+
+	</form>
+	<hr/>
+
+	<form name="fencedaemon" action="" method="get" tal:attributes="action clusterinfo/fencedaemon_url">
+	<table id="systemsTable" class="systemsTable" border="0" cellspacing="0">
+		<thead class="systemsTable"> 
+			<tr class="systemsTable"><td class="systemsTable" colspan="1">
+				<div class="systemsTableTop">
+					<strong>Fence Daemon Properties</strong>
+				</div>
+			</td></tr>
+		</thead>
+
+		<tbody class="systemsTable">
+			<tr class="systemsTable">
+				<td class="systemsTable">Post Fail Delay</td>
+				<td class="systemsTable">
+					<input type="text" name="post_fail_delay" value="" tal:attributes="value clusterinfo/pfd"/>
+				</td>
+			</tr>
+
+			<tr class="systemsTable">
+				<td class="systemsTable">Post Join Delay</td>
+				<td class="systemsTable">
+					<input type="text" name="post_join_delay" value="" tal:attributes="value clusterinfo/pjd"/>
+				</td>
+			</tr>
+		</tbody>
+
+		<tfoot class="systemsTable">
+			<tr class="systemsTable">
+				<td class="systemsTable" colspan="2">
+					<div class="systemsTableEnd">
+						<input type="submit" value="Apply"/>
+					</div>
+				</td>
+			</tr>
+		</tfoot>
+	</table>
+
+	</form>
+	<hr/>
+
+	<form name="multicast" action="" method="get" tal:attributes="action clusterinfo/multicast_url">
+
+	<table id="systemsTable" class="systemsTable" border="0" cellspacing="0">
+		<thead class="systemsTable"> 
+			<tr class="systemsTable"><td class="systemsTable" colspan="1">
+				<div class="systemsTableTop">
+					<strong>Multicast Configuration</strong>
+				</div>
+			</td></tr>
+		</thead>
+
+		<tbody class="systemsTable">
+			<tr class="systemsTable">
+				<td class="systemsTable">
+					<input type="radio" name="mcast" value="False" checked="" tal:attributes="checked python:clusterinfo['is_mcast'] == 'False'"/><strong>Let cluster choose the multicast address</strong>
+				</td>
+			</tr>
+			<tr class="systemsTable">
+				<td class="systemsTable">
+					<input type="radio" name="mcast" value="True"/><strong>I prefer to choose the multicast address</strong>
+				</td>
+			</tr>
+
+			<tr class="systemsTable">
+				<td class="systemsTable" colspan="2">
+					<input type="text" name="mcast_address" value="" tal:attributes="value clusterinfo/mcast_addr"/>
+				</td>
+			</tr>
+		</tbody>
+
+		<tfoot class="systemsTable">
+			<tr class="systemsTable"><td class="systemsTable" colspan="2">
+				<div class="systemsTableEnd">
+					<input type="submit" value="Apply"/>
+				</div>
+			</td></tr>
+		</tfoot>
+	</table>
+
+	</form>
+	<hr/>
+
+	<form name="quorum_partition" action="" method="get" tal:attributes="action clusterinfo/quorumd_url">
+	<table id="systemsTable" class="systemsTable" border="0" cellspacing="0">
+		<thead class="systemsTable"> 
+			<tr class="systemsTable"><td class="systemsTable" colspan="1">
+				<div class="systemsTableTop">
+					<strong>Quorum Partition Configuration</strong>
+				</div>
+			</td></tr>
+		</thead>
+
+		<tbody class="systemsTable">
+			<tr class="systemsTable"><td class="systemsTable">
+				<input type="radio" name="quorumd" value="False" checked="" tal:attributes="checked python:clusterinfo['is_quorumd'] == 'False'"/>
+					<strong>Do not use a Quorum Partition</strong>
+			</td></tr>
+
+			<tr class="systemsTable"><td class="systemsTable">
+				<input type="radio" name="quorumd" value="True"/>
+					<strong>I prefer to use a Quorum Partition</strong>
+			</td></tr>
+
+			<tr class="systemsTable"><td class="systemsTable" colspan="2">
+				Interval: <input type="text" name="interval" value="" tal:attributes="value clusterinfo/interval"/>
+			</td></tr>
+
+			<tr class="systemsTable"><td class="systemsTable" colspan="2">
+				Votes: <input type="text" name="votes" value="" tal:attributes="value clusterinfo/votes"/>
+			</td></tr>
+
+			<tr class="systemsTable"><td class="systemsTable" colspan="2">
+				TKO: <input type="text" name="tko" value="" tal:attributes="value clusterinfo/tko"/>
+			</td></tr>
+
+			<tr class="systemsTable"><td class="systemsTable" colspan="2">
+				Minimum Score: <input type="text" name="min_score" value="" tal:attributes="value clusterinfo/min_score"/>
+			</td></tr>
+
+			<tr class="systemsTable"><td class="systemsTable" colspan="2">
+				Device: <input type="text" name="device" value="" tal:attributes="value clusterinfo/device"/>
+			</td></tr>
+
+			<tr class="systemsTable"><td class="systemsTable" colspan="2">
+				Label: <input type="text" name="label" value="" tal:attributes="value clusterinfo/label"/>
+			</td></tr>
+		</tbody>
+	</table>
+
+	<table id="systemsTable" class="systemsTable" border="0" cellspacing="0">
+		<thead class="systemsTable"> 
+			<tr class="systemsTable"><td class="systemsTable" colspan="1">
+				<div class="systemsTableTop">
+					<strong>Heuristics</strong>
+				</div>
+			</td></tr>
+
+			<tr class="systemsTable">
+				<th class="systemsTable">
+					<div class="systemsTableTop">Name</div>
+				</th>
+				<th class="systemsTable">
+					<div class="systemsTableTop">Path to Program</div>
+				</th>
+				<th class="systemsTable">
+					<div class="systemsTableTop">Interval</div>
+				</th>
+				<th class="systemsTable">
+					<div class="systemsTableTop">Score</div>
+				</th>
+			</tr>
+		</thead>
+
+		<tbody class="systemsTable"
+			tal:define="global heuristics clusterinfo/hlist">
+
+			<tr class="systemsTable" tal:repeat="heuristic heuristics">
+				<td class="systemsTable">
+					<input type="text" name="hname" value="" tal:attributes="value heuristic/hname"/>
+				</td>
+				<td class="systemsTable">
+					<input type="text" name="hinterval" value="" tal:attributes="value heuristic/hinterval"/>
+				</td>
+				<td class="systemsTable" colspan="2">
+					<input type="text" name="hprog" value="" tal:attributes="value heuristic/hprog"/>
+				</td>
+				<td class="systemsTable">
+					<input type="text" name="hscore" value="" tal:attributes="value heuristic/hscore"/>
+				</td>
+			</tr>
+		</tbody>
+
+		<tfoot class="systemsTable">
+			<tr class="systemsTable"><td class="systemsTable" colspan="2">
+				<div class="systemsTableEnd">
+					<input type="submit" value="Apply"/>
+				</div>
+			</td></tr>
+		</tfoot>
+	</table>
+	</form>
+</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)"/>
+</div>
+
+<div metal:define-macro="node-form">
+	<tal:comment tal:replace="nothing">
+		First table row is status icon, name, and dropdown
+		Second row is daemon macro and failoverdom membership
+		Third row is fencing macro
+		Fourth row is logging
+	</tal:comment>
+
+	<table tal:define="
+		global ricci_agent python:here.getRicciAgentForCluster(request);
+		global nodestatus python:here.getClusterStatus(ricci_agent);
+		global nodeinfo python:here.getNodeInfo(modelb, nodestatus, request)">
+
+		<tr tal:condition="python:nodeinfo['nodestate'] == '0'">
+			<td>
+				<img src="node_active.png"/>
+			</td>
+
+			<td style="horizontal-align:left;">
+				<table>
+					<tr><td>
+						<h2 style="border:0px;">Node name: <span tal:content="nodeinfo/nodename"/></h2>
+					</td></tr>
+					<tr style="horizontal-align:left;"><td>
+						<h2 style="border:0px;">Status: <font color="green">Cluster member</font>
+					</td></tr>
+				</table>
+			</td>
+
+			<td style="margin:15px; vertical-align:top">
+			<form method="post" onSubmit="return dropdown(this.gourl)">
+				<select name="gourl">
+					<option value="">Choose a Task...</option>
+					<option value="" tal:attributes="value nodeinfo/jl_url">Have node leave cluster</option>
+					<option value="">----------</option>
+					<option value="" tal:attributes="value nodeinfo/fence_url">Fence this node</option>
+					<option value="" tal:attributes="value nodeinfo/reboot_url">Reboot this node</option>
+					<option value="">----------</option>
+					<option value="" tal:attributes="value nodeinfo/delete_url">Delete this node</option>
+				</select>
+				<input type="submit" value="Go"/>
+			</form>
+			</td>
+		</tr>
+
+		<tr tal:condition="python:nodeinfo['nodestate'] == '1'">
+			<td>
+				<img src="node_inactive.png"/>
+			</td>
+			<td>
+				<table>
+					<tr><td>
+						<h2 style="border:0px;">Node name: <span tal:content="nodeinfo/nodename"/></h2>
+					</td></tr>
+
+					<tr><td style="margin:10px;padding:10px;">
+						<h2 style="border:0px;">Status: <font color="red">Currently not a cluster participant</font>
+					</td></tr>
+				</table>
+			</td>
+
+			<td style="margin:15px;vertical-align:top;">
+				<form method="post" onSubmit="return dropdown(this.gourl)">
+					<select name="gourl">
+						<option value="">Choose a Task...</option>
+						<option value="" tal:attributes="value nodeinfo/jl_url">Have node join cluster</option>
+						<option value="">----------</option>
+						<option value="" tal:attributes="value nodeinfo/fence_url">Fence this node</option>
+						<option value="" tal:attributes="value nodeinfo/reboot_url">Reboot this node</option>
+						<option value="">----------</option>
+						<option value="" tal:attributes="value nodeinfo/delete_url">Delete this node</option>
+					</select>
+					<input type="submit" value="Go"/>
+				</form>
+			</td>
+		</tr>
+
+		<tr tal:condition="python:nodeinfo['nodestate'] == '2'">
+			<td>
+				<img src="node_unknown.png"/>
+			</td>
+
+			<td>
+				<h2 style="border:0px;">Node name: <span tal:replace="nodeinfo/nodename"/></h2>
+			</td>
+
+			<td style="margin:10px;padding:10px;">
+				<h2 style="border:0px;">Status: <font color="gray">This node is not responding</font>
+			</td>
+		</tr>
+
+		<tr><td>
+			<table border="1px">
+				<tr>
+					<th>Cluster daemon</th>
+					<th>Enabled at start-up</th>
+					<th>Currently running</th>
+				</tr>
+
+				<tr tal:repeat="demon nodeinfo/d_states">
+					<td><span tal:content="demon/name"/></td>
+					<td><span tal:content="demon/enabled"/><a href="" style="text-align:right;">(Change)</a></td>
+					<td><span tal:content="demon/running"/></td>
+				</tr>
+			</table>
+		</td></tr>
+	</table>
+</div>
+
+<div metal:define-macro="nodes-form">
+	<table tal:define="
+		global ricci_agent python:here.getRicciAgentForCluster(request);
+		global status python:here.getClusterStatus(ricci_agent);
+		global nds python:here.getNodesInfo(modelb,status,request)">
+
+		<tr tal:repeat="nd nds" width="100%" style="border-bottom: blue 3px groove;">
+			<td width="100%" style="border-bottom: #8cacbb 3px solid;">
+				<table width="800px">
+					<tr style="padding:10px;margin:10px;border-width:0px;">
+						<td style="padding:10px;margin:10px;border-width:0px;">
+							<h1 style="border:0px;">Node Name: <span tal:content="nd/nodename"/></h1>
+						</td>
+
+						<td style="margin:10px">
+							<form method="post" onSubmit="return dropdown(this.gourl)">
+								<select name="gourl">
+									<option value="">Choose a Task...</option>
+									<option value="" tal:attributes="value nd/configurl">Configure</option>
+									<option value="">Have node leave cluster</option>
+									<option value="">Stop all cluster services</option>
+									<option value="">----------</option>
+									<option value="">Fence this node</option>
+									<option value="">Reboot this node</option>
+									<option value="">----------</option>
+									<option value="">Delete</option>
+								</select>
+								<input type="submit" value="Go"/>
+							</form>
+						</td>
+						<td style="width:30%; text-align:right;">
+							<h3><a href="" tal:attributes="href nd/fenceurl">Manage Fencing for this Node</a></h3>
+						</td>
+					</tr>
+
+					<tr style="padding:10px;margin:10px"><td style="padding:10px;margin:10px">
+						<h2 style="border:0px;">Status: <i><span tal:content="nd/status"/></i></h2>
+					</td></tr>
+
+					<tr style="padding:10px;margin:10px">
+						<td style="padding:10px;margin:10px">
+							<h2 style="border:0px;">Currently Hosting:</h2>
+							<ul>
+								<li tal:repeat="svc nd/currentservices">
+									<a href="" tal:attributes="href svc/svcurl"><span tal:replace="svc/servicename"/></a>
+								</li>
+							</ul>
+						</td>
+						<td style="width:30%;text-align:right">
+							<h3>Failover Domain Membership: </h3>
+							<ul>
+								<li tal:repeat="fdom nd/fdoms">
+									<a href="" tal:attributes="href fdom/fdomurl"><span tal:content="fdom/name"/></a>
+								</li>
+							</ul>
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+ </div>
+
+<div metal:define-macro="nodelist-form">
+	<h2>Node List Form</h2>
+ </div>
+
+<div metal:define-macro="nodegrid-form">
+	<h2>Node Grid Form</h2>
+</div>
+
+<div metal:define-macro="nodeconfig-form">
+	<h2>Node Configuration Form</h2>
+</div>
 
-  <div metal:define-macro="nodeadd-form">
+<div metal:define-macro="nodeadd-form">
 	<script type="text/javascript" src="/luci/homebase/homebase_common.js">
 	</script>
 
@@ -609,197 +749,224 @@
 			<input type="button" class="hbSubmit" name="Submit" value="Submit" onClick="validateForm(document.adminform);" />
 		</div>
 	</form>
-  </div>
+</div>
+
+<div metal:define-macro="nodeprocess-form">
+	<h2>Node Process Form</h2>
+</div>
+
+<div metal:define-macro="services-form">
+	<h2>Services Form</h2>
+</div>
+
+<div metal:define-macro="servicelist-form">
+	<table 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 svcs svcinf/services">
+
+	<tr width="100%" style="border-bottom: blue 3px groove;" tal:repeat="svc svcs">
+		<td width="100%" style="border-bottom: #8cacbb 3px solid;">
+			<table width="800px">
+				<tr style="padding:10px;margin:10px;border-width:0px;">
+					<td style="padding:10px;margin:10px;border-width:0px;">
+						<h1 style="border:0px;">Service Name: <span tal:replace="svc/name"/></h1>
+					</td>
+
+					<td style="margin:10px">
+						<form method="post" onSubmit="return dropdown(this.gourl)">
+							<select name="gourl">
+								<option value="">Choose a Task...</option>
+								<option value="" tal:attributes="value svc/cfgurl">Configure</option>
+								<option value="">----------</option>
+								<option value="">Delete</option>
+							</select>
+							<input type="submit" value="Go"/>
+						</form>
+					</td>
+
+					<td style="width:30%; text-align:right;"
+						tal:define="autostart svc/autostart |nothing">
+						<h2 tal:condition="autostart" style="border:0px;">Autostart is enabled for this service</h2>
+						<h2 tal:condition="not: autostart" style="border:0px;">Autostart is not enabled for this service</h2>
+					</td>
+				</tr>
+
+				<tr style="padding:10px;margin:10px" tal:define="running svc/running |nothing">
+					<td tal:condition="running" style="padding:10px;margin:10px">
+						<h2 style="border:0px;">Status: <i><font color="green">Running on <span tal:content="svc/nodename"/></font></i></h2>
+					</td>
+
+					<td tal:condition="not: running" style="padding:10px;margin:10px">
+						<h2 style="border:0px;">Status: <i><font color="red">This service is stopped</font></i></h2>
+					</td>
+
+					<td tal:condition="running" style="width:30%;text-align:right">
+						<h2 style="border:0px;">Failover Domain Association: <span tal:replace="svc/faildom"/></h2>
+					</td>
+				</tr>
+			</table>
+		</tr>
+	</table>
+</div>
+
+<div metal:define-macro="serviceadd-form">
+	<h2>Service Add Form</h2>
+</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 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 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 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 running sinfo/running | nothing;" />
+
+	<table width="800px">
+		<tr style="padding:10px;margin:10px;border-width:0px;">
+			<td style="padding:10px;margin:10px;border-width:0px;">
+				<h1 style="border:0px;">Service Name: <span tal:content="sinfo/name"/></h1>
+			</td>
+
+			<td style="margin:10px">
+			<form method="post" onSubmit="return dropdown(this.gourl)">
+				<select name="gourl"
+					tal:define="global innermap sinfo/innermap;
+								starturls innermap/links">
+
+					<tal:block tal:condition="running">
+						<option value=""><span tal:replace="innermap/current"/></option>
+						<option value="" tal:attributes="value innermap/restarturl">Restart this service</option>
+						<option value="">----------</option>
+						<option value="" tal:attributes="value innermap/disableurl">Disable this service</option>
+						<option value="">----------</option>
+						<option tal:repeat="starturl innermap/links" value="" tal:attributes="value starturl/url">Start this service on <span tal:replace="starturl/nodename"/></option>
+						<option value="">----------</option>
+						<option value="">Delete this service</option>
+					</tal:block>
+
+					<tal:block tal:condition="not: running">
+						<option value=""><span tal:replace="innermap/current"/></option>
+						<option value="">----------</option>
+						<option value="" tal:attributes="value innermap/enableurl">Enable this service</option>
+						<option value="">----------</option>
+					</tal:block>
+
+					<option value="" tal:repeat="starturl starturls" tal:attributes="value starturl/url">Start this service on <span tal:replace="starturl/nodename"/></option>
+					<option value="">----------</option>
+					<option value="">Delete This service</option>
+				</select>
+				<input type="submit" value="Go"/>
+			</form>
+			</td>
+		</tr>
+
+		<tr style="padding:10px;margin:10px;border-width:0px;"><td style="width:30%;text-align:center">
+			<h1 tal:condition="not: running" style="border:0px;">Service Status: <font color="red"><i>Stopped</i></font></h1>
+			<h1 tal:condition="running" style="border:0px;">Service Status: <font color="green"><i>Running</i></font></h1>
+		</td></tr>
+	</table>
+</div>
+
+<div metal:define-macro="service-form">
+	<h2>Service Form</h2>
+</div>
+
+<div metal:define-macro="serviceprocess-form">
+	<h2>Service Process Form</h2>
+</div>
+
+<div metal:define-macro="resources-form">
+	<h2>Resources Form</h2>
+</div>
+
+<div metal:define-macro="resourcelist-form">
+	<h2>Resource List Form</h2>
+</div>
+
+<div metal:define-macro="resourceadd-form">
+	<h2>Resource Add Form</h2>
+</div>
+
+<div metal:define-macro="resourceconfig-form">
+	<h2>Resource Configuration Form</h2>
+</div>
+
+<div metal:define-macro="resource-form">
+	<h2>Resource Form</h2>
+</div>
+
+<div metal:define-macro="resourceprocess-form">
+	<h2>Resource Process Form</h2>
+</div>
+
+<div metal:define-macro="fdoms-form">
+	<h2>Failover Domains Form</h2>
+</div>
+
+<div metal:define-macro="fdomlist-form">
+	<h2>Failover Domains List Form</h2>
+</div>
+
+<div metal:define-macro="fdomadd-form">
+	<h2>Failover Domain Add Form</h2>
+</div>
+
+<div metal:define-macro="fdomconfig-form">
+	<h2>Failover Domain Configuration Form</h2>
+</div>
+
+<div metal:define-macro="fdom-form">
+	<h2>Failover Domain Form</h2>
+</div>
+
+<div metal:define-macro="fdomprocess-form">
+	<h2>Failover Domain Process Form</h2>
+</div>
+
+<div metal:define-macro="fencedevs-form">
+	<h2>Fence Devices Form</h2>
+</div>
+
+<div metal:define-macro="fencedevlist-form">
+	<h2>Fence Device List Form</h2>
+</div>
+
+<div metal:define-macro="fencedevadd-form">
+	<h2>Fence Device Add Form</h2>
+</div>
+
+<div metal:define-macro="fencedevconfig-form">
+	<h2>Fence Device Configuration Form</h2>
+</div>
+
+<div metal:define-macro="fencedev-form">
+	<h2>Fence Device Form</h2>
+</div>
+
+<div metal:define-macro="fencedevprocess-form">
+	<h2>Fence Device Process Form</h2>
+</div>
+
 
-  <div metal:define-macro="nodeprocess-form">
-   <h2>Node Process Form</h2>
-  </div>
-  <div metal:define-macro="services-form">
-   <h2>Services Form</h2>
-  </div>
-  <div metal:define-macro="servicelist-form">
-    <table>
-     <span tal:define="global ricci_agent python:here.getRicciAgentForCluster(request)"/>
-     <span tal:define="global svcstatus python:here.getClusterStatus(ricci_agent)"/>
-     <span tal:define="global svcinf python:here.getServicesInfo(svcstatus,modelb,request)"/>
-     <span tal:define="global svcs svcinf/services"/>
-     <span tal:repeat="svc svcs">
-     <tr width="100%" STYLE="border-bottom: blue 3px groove;">
-      <td width="100%" STYLE="border-bottom: #8cacbb 3px solid;">
-       <table width="800px">
-        <tr STYLE="padding:10px;margin:10px;border-width:0px;"><td STYLE="padding:10px;margin:10px;border-width:0px;"><h1 STYLE="border:0px;">Service Name: <span tal:content="svc/name"/></h1></td>
-            <td STYLE="margin:10px"><form METHOD=POST onSubmit="return dropdown(this.gourl)">
-              <SELECT NAME="gourl">
-               <OPTION VALUE="">Choose a Task...</OPTION>
-               <OPTION VALUE="" tal:attributes="VALUE svc/cfgurl">Configure</OPTION>
-               <OPTION VALUE="">----------</OPTION>
-               <OPTION VALUE="">Delete</OPTION>
-              </SELECT>
-              <INPUT TYPE=SUBMIT VALUE="Go"/>
-             </FORM>
-            </td>
-           <span tal:define="autostart svc/autostart |nothing">
-            <span tal:condition="autostart">
-             <td STYLE="width:30%; text-align:right;"><h2 STYLE="border:0px;">Autostart is enabled for this service</h2></td>
-            </span>
-            <span tal:condition="not: autostart">
-             <td STYLE="width:30%; text-align:right;"><h2 STYLE="border:0px;">Autostart is enabled for this service</h2></td>
-            </span>
-           </span>
-       </tr>
-        <span tal:define="running svc/running |nothing">
-         <span tal:condition="running">
-          <tr STYLE="padding:10px;margin:10px">
-           <td STYLE="padding:10px;margin:10px"><h2 STYLE="border:0px;">Status:  <i><font color="green">Running on <span tal:content="svc/nodename"/></font></i></h2></td>
-           <td STYLE="width:30%;text-align:right"><h2 STYLE="border:0px;">Failover Domain Association: <span tal:content="svc/faildom"/></h2></td>
-          </tr>
-         </span>
-         <span tal:condition="not: running">
-          <tr STYLE="padding:10px;margin:10px">
-           <td STYLE="padding:10px;margin:10px"><h2 STYLE="border:0px;">Status:  <i><font color="red">This service is stopped</font></i></h2></td>
-
-           <td STYLE="width:30%;text-align:center"><h2 STYLE="border:0px;">Failover Domain Association: <span tal:content="svc/faildom"/></h2></td>
-          </tr>
-         </span>
-        </span>
- 
-      </table>
-        </tr>
-     
-     </span>
-     </table>
- 
-  </div>
-  <div metal:define-macro="serviceadd-form">
-   <h2>Service Add Form</h2>
-  </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 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 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 metal:use-macro="here/form-macros/macros/serviceconfig-form"/> -->
-  </div>
-  <div metal:define-macro="serviceconfig-form">
-  <span tal:define="global ricci_agent python:here.getRicciAgentForCluster(request)"/>
-   <span tal:define="global sstat python:here.getClusterStatus(ricci_agent)"/>
-   <span tal:define="global sinfo python:here.getServiceInfo(sstat, modelb,request)">
-    <span tal:define="global running sinfo/running | nothing"/>
-   <table width="800px">
-    <tr STYLE="padding:10px;margin:10px;border-width:0px;">
-     <td STYLE="padding:10px;margin:10px;border-width:0px;"><h1 STYLE="border:0px;">Service Name: <span tal:content="sinfo/name"/></h1></td>
-       <td STYLE="margin:10px"><form METHOD=POST onSubmit="return dropdown(this.gourl)">
-         <SELECT NAME="gourl">
-          <span tal:define="global innermap sinfo/innermap"/>
-          <span tal:condition="running">
-           <OPTION VALUE=""><span tal:content="innermap/current"/></OPTION>
-           <OPTION VALUE="" tal:attributes="VALUE innermap/restarturl">Restart this service</OPTION>
-           <OPTION VALUE="">----------</OPTION>
-           <OPTION VALUE="" tal:attributes="VALUE innermap/disableurl">Disable this service</OPTION>
-           <OPTION VALUE="">----------</OPTION>
-            <span tal:repeat="starturl innermap/links">
-             <OPTION VALUE=""  tal:attributes="VALUE starturl/url">Start this service on <span tal:content="starturl/nodename"/></OPTION>
-            </span>
-           <OPTION VALUE="">----------</OPTION>
-           <OPTION VALUE="">Delete this service</OPTION>
-           </span>
-           <span tal:condition="not: running">
-           <OPTION VALUE=""><span tal:content="innermap/current"/></OPTION>
-           <OPTION VALUE="">----------</OPTION>
-           <OPTION VALUE="" tal:attributes="VALUE innermap/enableurl">Enable this service</OPTION>
-           <OPTION VALUE="">----------</OPTION>
-           <span tal:define="starturls innermap/links">
-            <span tal:repeat="starturl starturls">
-             <OPTION VALUE="" tal:attributes="VALUE starturl/url">Start this service on <span tal:content="starturl/nodename"/></OPTION>
-            </span>
-           </span>
-           <OPTION VALUE="">----------</OPTION>
-           <OPTION VALUE="">Delete This service</OPTION>
-           </span>
-          </SELECT>
-          <INPUT TYPE=SUBMIT VALUE="Go"/>
-         </FORM>
-        </td>
-       </tr>
-     
-       <tr STYLE="padding:10px;margin:10px;border-width:0px;">
-      <span tal:condition="running">
-       <td STYLE="width:30%;text-align:center"><h1 STYLE="border:0px;">Service Status: <font color="green"><i>Running</i></font></h1></td>
-      </span>
-      <span tal:condition="not: running">
-       <td STYLE="width:30%;text-align:center"><h1 STYLE="border:0px;">Service Status: <font color="red"><i>Stopped</i></font></h1></td>
-      </span>
-    </tr>
-   </table>
-   </span>
-  </div>
-  <div metal:define-macro="service-form">
-   <h2>Service Form</h2>
-  </div>
-  <div metal:define-macro="serviceprocess-form">
-   <h2>Service Process Form</h2>
-  </div>
-  <div metal:define-macro="resources-form">
-   <h2>Resources Form</h2>
-  </div>
-  <div metal:define-macro="resourcelist-form">
-   <h2>Resource List Form</h2>
-  </div>
-  <div metal:define-macro="resourceadd-form">
-   <h2>Resource Add Form</h2>
-  </div>
-  <div metal:define-macro="resourceconfig-form">
-   <h2>Resource Configuration Form</h2>
-  </div>
-  <div metal:define-macro="resource-form">
-   <h2>Resource Form</h2>
-  </div>
-  <div metal:define-macro="resourceprocess-form">
-   <h2>Resource Process Form</h2>
-  </div>
-  <div metal:define-macro="fdoms-form">
-   <h2>Failover Domains Form</h2>
-  </div>
-  <div metal:define-macro="fdomlist-form">
-   <h2>Failover Domains List Form</h2>
-  </div>
-  <div metal:define-macro="fdomadd-form">
-   <h2>Failover Domain Add Form</h2>
-  </div>
-  <div metal:define-macro="fdomconfig-form">
-   <h2>Failover Domain Configuration Form</h2>
-  </div>
-  <div metal:define-macro="fdom-form">
-   <h2>Failover Domain Form</h2>
-  </div>
-  <div metal:define-macro="fdomprocess-form">
-   <h2>Failover Domain Process Form</h2>
-  </div>
-  <div metal:define-macro="fencedevs-form">
-   <h2>Fence Devices Form</h2>
-  </div>
-  <div metal:define-macro="fencedevlist-form">
-   <h2>Fence Device List Form</h2>
-  </div>
-  <div metal:define-macro="fencedevadd-form">
-   <h2>Fence Device Add Form</h2>
-  </div>
-  <div metal:define-macro="fencedevconfig-form">
-   <h2>Fence Device Configuration Form</h2>
-  </div>
-  <div metal:define-macro="fencedev-form">
-   <h2>Fence Device Form</h2>
-  </div>
-  <div metal:define-macro="fencedevprocess-form">
-   <h2>Fence Device Process Form</h2>
-  </div>
-  </body>
+</body>
 </html>




More information about the Cluster-devel mailing list