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 index_html stat ...
Date: 28 Aug 2006 23:05:00 -0000	[thread overview]
Message-ID: <20060828230500.30871.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/cluster
Module name:	conga
Changes by:	rmccabe at sourceware.org	2006-08-28 23:04:59

Modified files:
	luci/cluster   : form-macros index_html 
Removed files:
	luci/cluster   : status_check systest 

Log message:
	too long without a commit.. all style/UI stuff

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-macros.diff?cvsroot=cluster&r1=1.50&r2=1.51
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/index_html.diff?cvsroot=cluster&r1=1.10&r2=1.11
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/status_check.diff?cvsroot=cluster&r1=1.1&r2=NONE
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/systest.diff?cvsroot=cluster&r1=1.1&r2=NONE

--- conga/luci/cluster/form-macros	2006/08/17 16:22:41	1.50
+++ conga/luci/cluster/form-macros	2006/08/28 23:04:59	1.51
@@ -26,106 +26,90 @@
 </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="padding:10px;margin:10px">
-                <table>
-                <tr><td>
-								<h4 style="border:0px;">Status: <i><span tal:content="cstatus/status"/></i></h4>
-							</td></tr>
-
-							<tr><td style="padding:10px;margin:10px">
-								<h4 style="border:0px;">Total Cluster Votes: <i><span tal:content="cstatus/votes"/></i></h4>
-							</td></tr>
-
-							<tr><td style="padding:10px;margin:10px">
-								<h4 style="border:0px;">Minimum Required Quorum: <i><span tal:content="cstatus/minquorum"/></i></h4>
-              </td></tr>
-                </table>
-							</td>
-            </tr>
-            <tr>
-							<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;">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>Services: </h3>
-								<ul>
-                  <span tal:condition="python:len(cstatus['currentservices']) < 1">
-                   <li><i>No Services Defined</i></li>
-                  </span>
-                  <span tal:repeat="svc cstatus/currentservices">
-                    <span tal:condition="python:svc['srunning'] == '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>
-									   </li>
-                    </span>
-                    <span tal:condition="python:svc['srunning'] != 'true'">
-									   <li style="list-style-image:url(small_svc.png);">
-										  <a href="" tal:attributes="href svc/svcurl"><font color="red"><span tal:content="svc/name"/></font></a>
-									   </li>
-                    </span>
-                 </span>
-								</ul>
-							</td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-		</tbody>
+
+<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);
+			global cluster_status python: 'cluster ' + (cstatus['running'] == 'true' and 'running' or 'stopped');"
+ 	/>
+
+	<table class="cluster" width="100%">
+	<tr class="cluster info_top">
+		<td class="cluster cluster_name">
+			<strong class="cluster cluster_name">Cluster Name</strong>:
+			<a href=""
+				tal:attributes="href cstatus/clucfg;
+								class python: 'cluster ' + cluster_status;"
+				tal:content="cstatus/clusteralias" />
+		</td>
+
+		<td class="cluster cluster_action">
+			<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 value="" class="cluster">Restart this cluster</option>
+				</select>
+				<input class="cluster" type="submit" value="Go" />
+			</form>
+		</td>
+	</tr>
+
+	<tr class="cluster info_middle">
+		<td colspan="2" class="cluster cluster_quorum">
+			<ul class="cluster_quorum">
+				<li><strong class="cluster">Status</strong>: <span tal:replace="cstatus/status"/></li>
+				<li><strong class="cluster">Total Cluster Votes</strong>: <span tal:replace="cstatus/votes"/></li>
+				<li><strong class="cluster">Minimum Required Quorum</strong>: <span tal:replace="cstatus/minquorum"/></li>
+			</ul>
+		</td>
+	</tr>
+
+	<tr class="cluster info_bottom">
+		<td class="cluster cluster_nodes">
+			<strong class="cluster">Nodes</strong>
+			<ul class="cluster">
+			<tal:block tal:repeat="nd cstatus/currentnodes">
+				<tal:block
+					tal:define="global nodeclass python: 'cluster ' + (nd['status'] == '0' and 'node_active' or (nd['status'] == '1' and 'node_inactive' or 'node_unknown'));" />
+				<li tal:attributes="class python: nodeclass">
+					<a tal:content="nd/nodename"
+						tal:attributes="
+							href nd/configurl;
+							class python: nodeclass;" />
+				</li>
+			</tal:block>
+			</ul>
+		</td>
+
+		<td class="cluster_services">
+			<strong class="cluster">Services</strong>
+			<ul class="cluster">
+			<tal:block tal:condition="python:len(cstatus['currentservices']) < 1">
+				<li>No Services Defined</li>
+			</tal:block>
+
+			<tal:block tal:repeat="svc cstatus/currentservices">
+				<tal:block
+					tal:define="global svcclass python: svc['srunning'] == 'true' and 'running' or 'stopped'" />
+
+				<li tal:attributes="class python: 'cluster cluster_service ' + svcclass">
+					<a tal:content="svc/name"
+						tal:attributes="href svc/svcurl;
+							class python: 'cluster cluster_service ' + svcclass" />
+				</li>
+			</tal:block>
+			</ul>
+		</td>
+	</tr>
 	</table>
+	<hr>
+</div>
+</div>
 </div>
 
 <div metal:define-macro="cluster-form">
@@ -145,7 +129,7 @@
 	<form name="adminform" action="" method="post">
 		<input name="pagetype" id="pagetype" type="hidden" value="6" />
 
-		<h2>Add a Cluster</h2>
+		<h1>Add a cluster</h1>
 
 		<tal:block tal:condition="python: not sessionObj or not 'requestResults' in sessionObj or not 'nodeList' in sessionObj['requestResults']">
 		<input name="numStorage" type="hidden" value="3" />
@@ -670,247 +654,241 @@
 		Third row is fencing macro
 	</tal:comment>
 
-	<div tal:define="
+	<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 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'));"
+	/>
 
-		<div tal:condition="python:nodeinfo['nodestate'] == '0'">
-			<div style="margin-left: .0em;">
-				<img src="node_active.png"/>
-			  <div style="margin-left:100px">
-				 <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>
-			  </div>
-			</div>
+	 <table class="cluster node" width="100%">
+		<tr class="cluster node info_top">
+			<td class="cluster node node_name">
+				<img tal:attributes="
+					src python: status_class + '.png'" />
+				<strong class="cluster node">Node Name:</strong>
+				<span
+					tal:attributes="class python: 'cluster node ' + status_class"
+					tal:content="nodeinfo/nodename" />
+			</td>
 
-			<div style="margin:15px; vertical-align:top">
-			<form method="post" onSubmit="return dropdown(this.gourl)">
+			<td class="cluster node node_action"
+				tal:condition="python: nodeinfo['nodestate'] == '0' or nodeinfo['nodestate'] == '1'">
+				<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 tal:attributes="value nodeinfo/jl_url">
+						Have node <span tal:replace="python: nodeinfo['nodestate'] == '0' and 'leave' or 'join'" /> cluster
+					</option>
 					<option value="">----------</option>
-					<option value="" tal:attributes="value nodeinfo/fence_url">Fence this node</option>
+					<option 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>
+					<option tal:attributes="value nodeinfo/delete_url">Delete this node</option>
 				</select>
 				<input type="submit" value="Go"/>
-			</form>
-			</div>
-		</div>
+				</form>
+			</td>
+		</tr>
 
-		<div tal:condition="python:nodeinfo['nodestate'] == '1'">
-			<div style="margin-left: 0px;">
-				<img src="node_inactive.png"/>
-			  <div style="margin-left: 100px;">
-				 <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>
-			  </div>
-			</div>
+		<tr class="cluster node info_middle">
+			<td class="cluster node node_status" colspan="2">
+				<strong class="cluster node">Status:</strong>
+				<span tal:attributes="class python: 'cluster node ' + status_class"
+					tal:content="python: cluster_node_status_str" />
+			</td>
 
-			<div 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>
-			</div>
-		</div>
+		</tr>
 
-		<div tal:condition="python:nodeinfo['nodestate'] == '2'">
-			<div>
-				<img src="node_unknown.png"/>
-			</div>
-
-			<div>
-				<h2 style="border:0px;">Node name: <span tal:replace="nodeinfo/nodename"/></h2>
-			</div>
-
-			<div style="margin:10px;padding:10px;">
-				<h2 style="border:0px;">Status: <font color="gray">This node is not responding</font>
-			</div>
-		</div>
+		<tr class="cluster node info_bottom">
+			<td class="cluster node node_log" colspan="2">
+			     <a class="cluster node"
+					tal:attributes="href nodeinfo/logurl" onClick="return popup_log(this, 'notes')">
+					Show recent log activity for this node
+				</a>
+			</td>
+		</tr>
+	</table>
 
-    <div>
-     <a href="" tal:attributes="href nodeinfo/logurl" onClick="return popup_log(this, 'notes')">Show recent log activity for this node</a>
-    </div>
     <hr/>
-		<div>
-			<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>
-		</div>
-	</div>
+	<h3>Cluster daemons running on this node</h3>
+	<form name="daemon_form">
+	<table class="systemsTable">
+		<thead>
+			<tr class="systemsTable">
+				<th class="systemsTable">Daemon</th>
+				<th class="systemsTable">Currently running</th>
+				<th class="systemsTable">Enabled at start-up</th>
+			</tr>
+		</thead>
+		<tfoot class="systemsTable">
+			<tr class="systemsTable"><td class="systemsTable" colspan="3">
+				<div class="systemsTableEnd">
+					<input class="hbSubmit" type="button" value="Update node daemon properties" />
+				</div>
+			</td></tr>
+		</tfoot>
+		<tbody class="systemsTable">
+			<tr class="systemsTable" tal:repeat="demon nodeinfo/d_states">
+				<td class="systemsTable"><span tal:replace="demon/name"/></td>
+				<td class="systemsTable"><span tal:replace="python: demon['running'] and 'yes' or 'no'" /></td>
+				<td class="systemsTable">
+					<input type="checkbox"
+						tal:attributes="
+							name python: nodeinfo['nodename'] + ':' + demon['name'];
+							checked python: demon['enabled'] and 'checked'" />
+				</td>
+			</tr>
+		</tbody>
+	</table>
+	</form>
+
     <hr/>
-		<div style="padding:10px;margin:10px">
-							<h2 style="border:0px;">Services on this Node:</h2>
-              <span tal:condition="python:len(nodeinfo['currentservices']) == 0">
-                <h3><i>No cluster services are currently running here</i></h3>
-              </span>
-              <span tal:condition="python:len(nodeinfo['currentservices']) > 0">
-							<ul>
-								<li style="list-style-image: url(small_svc.png);" tal:repeat="svc nodeinfo/currentservices">
-									<a href="" tal:attributes="href svc/svcurl"><font color="green"><span tal:replace="svc/servicename"/></font></a>
-								</li>
-							</ul>
-              </span>
-			</div>
-  <hr/>
-    <div class=fdomblock>
-							<h3>Failover Domain Membership: </h3>
-              <span tal:condition="python:len(nodeinfo['fdoms']) == 0">
-               <h4><i>This node has no failover domain membership</i></h4>
-              </span>
-              <span tal:condition="python:len(nodeinfo['fdoms']) > 0">
-							<ul>
-								<li style="list-style-image: url(small_fdom.png);" tal:repeat="fdom nodeinfo/fdoms">
-									<a href="" tal:attributes="href fdom/fdomurl"><span tal:content="fdom/name"/></a>
-								</li>
-							</ul>
-              </span>
-     </div>
-  <hr/>
-  <h3>Fencing</h3>
-  <div style="margin-left: 0%;">
-   <h4>Main Fencing Method</h4>
-  </div>
-  <div style="margin-left: 50%;">
-   <h4>Backup Fencing Method</h4>
-  </div>
-</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)">
+	<div>
+		<h3>Services on this Node:</h3>
+		<ul class="cluster node">
+			<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>
+			</li>
+		</ul>
+	</div>
 
-		<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;">
-              <span tal:condition="python:nd['status'] == '0'">
-							  <h1 style="border:0px;">Node Name: <a href="" tal:attributes="href nd/configurl">
-                  <font color="green"><span tal:content="nd/nodename"/></font></a>
-                </h1>
-              </span>
-              <span tal:condition="python:nd['status'] == '1'">
-							  <h1 style="border:0px;">Node Name: <a href="" tal:attributes="href nd/configurl">
-                  <font color="red"><span tal:content="nd/nodename"/></font></a></h1>
-              </span>
-              <span tal:condition="python:nd['status'] == '2'">
-							  <h1 style="border:0px;">Node Name: <a href="" tal:attributes="href nd/configurl">
-                  <font color="gray"><span tal:content="nd/nodename"/></font></a>
-                </h1>
-              </span>
-						</td>
-            <span tal:condition="python:nd['status'] == '0'">
-						<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/jl_url">Have node leave cluster</option>
-									<option value="">----------</option>
-									<option value="" tal:attributes="value nd/fence_it_url">Fence this node</option>
-									<option value="" tal:attributes="value nd/reboot_url">Reboot this node</option>
-									<option value="">----------</option>
-									<option value="" tal:attributes="value nd/delete_url">Delete</option>
-								</select>
-								<input type="submit" value="Go"/>
-							</form>
-						</td>
-            </span>
-            <span tal:condition="python:nd['status'] == '1'">
-						<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/jl_url">Have node join cluster</option>
-									<option value="">----------</option>
-									<option value="" tal:attributes="value nd/fence_it_url">Fence this node</option>
-									<option value="" tal:attributes="value nd/reboot_url">Reboot this node</option>
-									<option value="">----------</option>
-									<option value="" tal:attributes="value nd/delete_url">Delete</option>
-								</select>
-								<input type="submit" value="Go"/>
-							</form>
-						</td>
-            </span>
-						<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_str"/></i></h2>
-					</td></tr>
-
-					<tr style="padding:10px;margin:10px">
-						<td style="padding:10px;margin:10px">
-							<h2 style="border:0px;">Services on this Node:</h2>
-              <span tal:condition="python:len(nd['currentservices']) == 0">
-                <h3><i>No cluster services are currently running here</i></h3>
-              </span>
-              <span tal:condition="python:len(nd['currentservices']) > 0">
-							<ul>
-								<li style="list-style-image: url(small_svc.png);" tal:repeat="svc nd/currentservices">
-									<a href="" tal:attributes="href svc/svcurl"><font color="green"><span tal:replace="svc/servicename"/></font></a>
-								</li>
-							</ul>
-              </span>
-						</td>
-						<td style="width:30%;text-align:right">
-							<h3>Failover Domain Membership: </h3>
-              <span tal:condition="python:len(nd['fdoms']) == 0">
-               <h4><i>This node has no failover domain membership</i></h4>
-              </span>
-              <span tal:condition="python:len(nd['fdoms']) > 0">
-							<ul>
-								<li style="list-style-image: url(small_fdom.png);" tal:repeat="fdom nd/fdoms">
-									<a href="" tal:attributes="href fdom/fdomurl"><span tal:content="fdom/name"/></a>
-								</li>
-							</ul>
-              </span>
-						</td>
-					</tr>
-          <tr><td><a href="" tal:attributes="href nd/logurl" onClick="return popup_log(this, 'notes')">Show recent log activity for this node</a></td></tr>
-				</table>
+	<hr/>
+
+    <div class="fdomblock">
+		<h3>Failover Domain Membership</h3>
+		<ul class="cluster node">
+			<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">
+				<a class="cluster node" tal:attributes="href fdom/fdomurl">
+					<span tal:replace="fdom/name"/>
+				</a>
+			</li>
+		</ul>
+	</div>
+
+	<hr/>
+
+	<h3>Fencing</h3>
+	<table class="cluster node" width="100%">
+		<tr class="cluster node info_top">
+			<td class="cluster node fence_main">
+				<strong class="cluster node">Main Fencing Method</strong>
+			</td>
+			<td class="cluster node fence_backup">
+				<strong class="cluster node">Backup Fencing Method</strong>
 			</td>
 		</tr>
 	</table>
- </div>
+</div>
+
+<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)">
+
+	<div tal:repeat="nd nds">
+		<tal:block
+			tal:define="global node_class python: 'cluster node ' + ((nd['status'] == '0' and 'node_active' or (nd['status'] == '1' and 'node_inactive' or 'node_unknown')))" />
+		<table class="cluster" width="100%">
+			<tr class="node info_top">
+				<td class="node node_name">
+					<strong>Node Name:</strong>
+					<a 	tal:content="nd/nodename"
+						tal:attributes="
+							href nd/configurl;
+							class python: node_class"
+					/>
+				</td>
+
+				<td class="node node_action" tal:condition="python: nd['status'] == '0' or nd['status'] == '1'">
+					<form method="post" onSubmit="return dropdown(this.gourl)">
+						<select class="node" name="gourl">
+							<option value="">Choose a Task...</option>
+							<option tal:attributes="value nd/jl_url">
+								<span tal:condition="python: nd['status'] == '0'" tal:replace="string: Have node leave cluster" />
+								<span tal:condition="python: nd['status'] == '1'" tal:replace="string: Have node join cluster" />
+							</option>
+							<option value="">----------</option>
+							<option tal:attributes="value nd/fence_it_url">Fence this node</option>
+							<option tal:attributes="value nd/reboot_url">Reboot this node</option>
+							<option value="">----------</option>
+							<option tal:attributes="value nd/delete_url">Delete</option>
+						</select>
+						<input type="submit" value="Go"/>
+					</form>
+				</td>
+			</tr>
+
+			<tr class="node info_middle">
+				<td class="node_status" colspan="2">
+					<strong class="cluster node">Status:</strong>
+					<span tal:replace="nd/status_str"/>
+				</td>
+			</tr>
+
+			<tr class="node info_bottom">
+				<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">
+							No cluster services are currently running here
+						</li>
+						<li class="cluster_service cluster node"
+							tal:repeat="svc nd/currentservices">
+							<a class="cluster running"
+								tal:content="svc/servicename"
+								tal:attributes="href svc/svcurl" />
+						</li>
+					</ul>
+				</td>
+
+				<td class="node node_fdom">
+					<strong class="cluster node">Failover Domain Membership:</strong>
+					<ul class="cluster node">
+						<li tal:condition="python: len(nd['fdoms']) == 0">
+							This node has no failover domain membership
+						</li>
+						<li class="node_fdom" tal:repeat="fdom nd/fdoms">
+							<a class="cluster node"
+								tal:content="fdom/name"
+								tal:attributes="href fdom/fdomurl" />
+						</li>
+					</ul>
+				</td>
+			</tr>
+
+			<tr class="node info_bottom">
+				<td class="node node_fencing">
+					<a class="cluster node"
+						tal:attributes="href nd/fenceurl">
+						Manage Fencing for this Node
+					</a>
+				</td>
+				<td class="node node_logs">
+					<a class="cluster node"
+						onClick="return popup_log(this, 'notes')"
+						tal:attributes="href nd/logurl">
+						Show recent log activity for this node
+					</a>
+				</td>
+			</tr>
+		</table>
+		<hr/>
+	</div>
+</div>
+</div>
 
 <div metal:define-macro="nodelist-form">
 	<h2>Node List Form</h2>
@@ -925,10 +903,10 @@
 </div>
 
 <div metal:define-macro="nodelogs-form">
-	<h2>Recent Log Activity for <span tal:content="request/nodename"/></h2>
+	<h2>Recent Log Activity for <span tal:replace="request/nodename"/></h2>
   ---------------------------------------------------------------------------------------
   <br/>
-  <span tal:content="python:here.getLogsForNode(request)"/>
+  <span tal:replace="python:here.getLogsForNode(request)"/>
 </div>
 
 <div metal:define-macro="nodeadd-form">
@@ -946,7 +924,7 @@
 		<input name="numStorage" type="hidden" value="1" />
 		<input name="pagetype" type="hidden" value="15" />
 
-		<h2>Add a Node to a Cluster</h2>
+		<h2>Add a node to <span tal:replace="request/form/clusterName | request/clustername | string: the cluster" /></h2>
 
 		<table id="systemsTable" class="systemsTable" border="0" cellspacing="0">
 			<thead class="systemsTable">
@@ -1005,55 +983,62 @@
 </div>
 
 <div metal:define-macro="servicelist-form">
-	<table tal:define="
+	<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 svcs svcinf/services">
+			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>
+	<tal:block tal:repeat="svc svcs">
+		<table class="cluster service" width="100%"
+			tal:define="
+				running svc/running | nothing;
+				autostart svc/autostart |nothing">
+
+			<tr class="cluster service info_top">
+				<td class="cluster service service_name">
+					<strong class="cluster service">Service Name:</strong> <span tal:replace="svc/name"/>
+				</td>
 
-				<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 class="cluster service service_action">
+					<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>
+			</tr>
 
-					<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>
+			<tr class="cluster service info_middle">
+				<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">
+							<span class="running">
+								Running on <tal:block tal:replace="svc/nodename"/>
+							</span>
+						</tal:block>
+						<tal:block tal:condition="not: running">
+							<span class="stopped" tal:content="string:This service is stopped"/>
+						</tal:block>
+					</div>
+					<p>Autostart is <span tal:condition="not: autostart" tal:replace="string: not" /> enabled for this service</p>
+				</td>
+			</tr>
 
-					<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>
+			<tr class="cluster service info_bottom">
+				<td class="cluster service service_fdom" tal:condition="running" colspan="2">
+					<strong class="cluster service">Failover Domain Association:</strong> <span tal:replace="svc/faildom"/>
+				</td>
+			</tr>
+		</table>
+		<hr/>
+	</tal:block>
 </div>
 
 <div metal:define-macro="serviceadd-form">
@@ -1080,92 +1065,94 @@
 </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>
+	<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 class="cluster service" width="100%">
+		<tr class="cluster service info_top">
+			<td class="cluster service service_name">
+				<strong class="service_name">Service Name:</strong> <span tal:replace="sinfo/name"/>
+			</td>
+			<td class="cluster service service_action">
+				<form method="post" onSubmit="return dropdown(this.gourl)">
+					<select name="gourl"
+						tal:define="global innermap sinfo/innermap;
+						starturls innermap/links">
 
-					<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>
+						<option value="">Choose a Task...</option>
+						<tal:block tal:condition="running">
+							<option value="">----------</option>
+							<option value="" tal:attributes="value innermap/restarturl">Restart this service</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="">----------</option>
+							<option value="" tal:attributes="value innermap/enableurl">Enable this service</option>
+							<option value="">----------</option>
+						</tal:block>
+					</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>
-  <h2> Service Composition</h2>
-  <ul>
-  <span tal:omit-tag="" tal:define="global svc_rcs sinfo/resource_list"/>
-    <li tal:repeat="res svc_rcs">
-      <ul>
-      <div tal:define="global type res/type;
-		       global ref res/ref_object | nothing"/>
-        <span omit-tag="" tal:condition="ref">
-          <span tal:omit-tag="" tal:define="global shared string:true"/>
-        </span>
-	    <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'">
-          <li metal:use-macro="here/resource-form-macros/macros/fs_macro"/>
-        </span>
-        <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'">
-          <li metal:use-macro="here/resource-form-macros/macros/nfsm_macro"/>
-        </span>
-        <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'">
-          <li metal:use-macro="here/resource-form-macros/macros/nfsc_macro"/>
-        </span>
-        <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: '">
-          <li metal:use-macro="here/resource-form-macros/macros/scr_macro" />
-        </span>
-       </div>
-      </ul>
-    </li>
-  </ul>
+		<tr class="cluster service info_middle">
+			<td class="cluster service service_status">
+				<strong>Service Status:</strong>
+				<span	tal:content="python: running and 'Running' or 'Stopped'"
+						tal:attributes="class python: running and 'running' or 'stopped'" />
+			</td>
+		</tr>
+	</table>
+	<br/>
+	<h2>Service Composition</h2>
+	<ul tal:define="global svc_rcs sinfo/resource_list">
+	    <li tal:repeat="res svc_rcs">
+			<ul tal:define="
+				global type res/type;
+				global ref res/ref_object | nothing">
+
+				<tal:block omit-tag="" tal:condition="ref">
+					<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: '">
+						<li metal:use-macro="here/resource-form-macros/macros/ip_macro"/>
+					</span>
+					<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'">
+						<li metal:use-macro="here/resource-form-macros/macros/gfs_macro"/>
+					</span>
+					<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'">
+						<li metal:use-macro="here/resource-form-macros/macros/nfsx_macro"/>
+					</span>
+					<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'">
+						<li metal:use-macro="here/resource-form-macros/macros/smb_macro" />
+					</span>
+					<span tal:omit-tag="" tal:condition="python:type == 'Script: '">
+						<li metal:use-macro="here/resource-form-macros/macros/scr_macro" />
+					</span>
+				</div>
+			</ul>
+		</li>
+	</ul>
 </div>
 
 <div metal:define-macro="service-form">
--- conga/luci/cluster/index_html	2006/08/16 17:24:45	1.10
+++ conga/luci/cluster/index_html	2006/08/28 23:04:59	1.11
@@ -175,12 +175,12 @@
                       Page body text
                     </metal:bodytext>
                 <span tal:omit-tag="" tal:define="global cname request/clustername |nothing"/>
-                <span tal:omit-tag="" tal:condition="not: cname">
-                <h1>Choose a cluster to administer</h1>
-                 </span>
+                <span tal:omit-tag="" tal:condition="python: not cname and (not ('pagetype' in request) or request['pagetype'] != '6')">
+	                <h1>Choose a cluster to administer</h1>
+				</span>
                 <span tal:omit-tag="" tal:condition="cname">
-                <h1 tal:content="string:${cname}"></h1>
-                 </span>
+					<h1 tal:content="string:${cname}"></h1>
+				</span>
 
  
              <metal:main-form-content use-macro="here/form-chooser/macros/main-form">



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

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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060828230500.30871.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.