[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[Cluster-devel] conga ./conga.spec.in.in luci/cluster/cluster_ ...



CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL5
Changes by:	rmccabe sourceware org	2010-09-29 17:08:26

Modified files:
	.              : conga.spec.in.in 
	luci/cluster   : cluster_config-macros fence-macros 
	                 resource-form-macros 
	                 validate_config_multicast.js validate_fence.js 
	luci/docs      : Makefile 
	luci/plone-custom: conga.js 
	luci/site/luci/Extensions: FenceHandler.py LuciClusterInfo.py 
	                           LuciValidation.py 
	                           conga_storage_constants.py 
	luci/site/luci/Extensions/ClusterModel: FenceDeviceAttr.py 
	                                        ModelBuilder.py 
	ricci          : Makefile 
Added files:
	luci/docs      : luci_admin.8 
	ricci/docs     : Makefile ricci.8 

Log message:
	Sync up with RHEL56 dist cvs

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.116&r2=1.45.2.117
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/cluster_config-macros.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.3.2.7&r2=1.3.2.8
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/fence-macros.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2.2.17&r2=1.2.2.18
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/resource-form-macros.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.21.2.17&r2=1.21.2.18
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/validate_config_multicast.js.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.3.2.5&r2=1.3.2.6
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/validate_fence.js.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.2.13&r2=1.1.2.14
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/docs/luci_admin.8.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=NONE&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/docs/Makefile.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2.2.1&r2=1.2.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/conga.js.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.3.2.10&r2=1.3.2.11
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/FenceHandler.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.4.2.22&r2=1.4.2.23
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterInfo.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.19&r2=1.1.4.20
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciValidation.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.6.2.16&r2=1.6.2.17
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/conga_storage_constants.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.8.2.2&r2=1.8.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/FenceDeviceAttr.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.5.2.4&r2=1.5.2.5
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.15&r2=1.1.4.16
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/Makefile.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.11.2.2&r2=1.11.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/docs/Makefile.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=NONE&r2=1.2.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/docs/ricci.8.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=NONE&r2=1.1.2.1

--- conga/conga.spec.in.in	2009/05/21 13:32:03	1.45.2.116
+++ conga/conga.spec.in.in	2010/09/29 17:08:23	1.45.2.117
@@ -142,6 +142,8 @@
 %if "%{include_zope_and_plone}" == "yes"
 				%{_libdir}/luci/zope
 %endif
+%doc
+%{_mandir}/man8/luci_admin.8*
 
 %pre -n luci
 groupmod luci >&/dev/null
@@ -287,6 +289,8 @@
 %config(noreplace)	%{_sysconfdir}/oddjobd.conf.d/ricci-modvirt.oddjob.conf
 %config(noreplace)	%{_sysconfdir}/dbus-1/system.d/ricci-modvirt.systembus.conf
 			%{_libexecdir}/ricci-modvirt
+%doc
+%{_mandir}/man8/ricci.8*
 
 %pre -n ricci
 getent group ricci >/dev/null || groupadd -r ricci
--- conga/luci/cluster/cluster_config-macros	2010/08/05 18:01:15	1.3.2.7
+++ conga/luci/cluster/cluster_config-macros	2010/09/29 17:08:24	1.3.2.8
@@ -608,7 +608,14 @@
 						</tal:block>
 					</td>
 				</tr>
-
+				<tr class="systemsTable"
+					tal:condition="python:os_version != 'rhel4'">
+					<td class="systemsTable">
+						<input type="radio" name="mcast" value="broadcast"
+							onclick="disable_mcast('mcast_address', 'mcast_interface')"
+							tal:attributes="checked python: clusterinfo['is_bcast'] == 'True'"/>Use broadcast
+					</td>
+				</tr>
 				<tr class="systemsTable">
 					<td class="systemsTable">
 						Multicast address
--- conga/luci/cluster/fence-macros	2010/08/07 04:11:22	1.2.2.17
+++ conga/luci/cluster/fence-macros	2010/09/29 17:08:24	1.2.2.18
@@ -10,7 +10,7 @@
 <html>
 
 <head>
-    <title tal:content="string:" />
+	<title tal:content="string:" />
 </head>
 
 <body>
@@ -186,6 +186,10 @@
 		<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ilo" />
 	</tal:block>
 
+	<tal:block tal:condition="python: cur_fence_type == 'fence_ilo_mp'">
+		<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ilo_mp" />
+	</tal:block>
+
 	<tal:block tal:condition="python: cur_fence_type == 'fence_drac'">
 		<tal:block metal:use-macro="here/fence-macros/macros/fence-form-drac" />
 	</tal:block>
@@ -254,6 +258,18 @@
 		<tal:block metal:use-macro="here/fence-macros/macros/fence-form-scsi" />
 	</tal:block>
 
+	<tal:block tal:condition="python: cur_fence_type == 'fence_cisco_mds'">
+		<tal:block metal:use-macro="here/fence-macros/macros/fence-form-cisco_mds" />
+	</tal:block>
+
+	<tal:block tal:condition="python: cur_fence_type == 'fence_ifmib'">
+		<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ifmib" />
+	</tal:block>
+
+	<tal:block tal:condition="python: cur_fence_type == 'fence_ucs'">
+		<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ucs" />
+	</tal:block>
+
 	<tal:block tal:condition="python: cur_fence_type == 'fence_manual'">
 		<tal:block metal:use-macro="here/fence-macros/macros/fence-form-manual" />
 	</tal:block>
@@ -339,6 +355,9 @@
 	<option name="fence_scsi" value="fence_scsi">SCSI Fencing</option>
 	<option name="fence_vmware" value="fence_vmware">VMware Fencing</option>
 	<option name="fence_lpar" value="fence_lpar">LPAR Fencing</option>
+	<option name="fence_cisco_mds" value="fence_cisco_mds">Cisco MDS</option>
+	<option name="fence_ucs" value="fence_ucs">Cisco UCS</option>
+	<option name="fence_ifmib" value="fence_ifmib">IF MIB</option>
 </div>
 
 <div metal:define-macro="fence-option-list">
@@ -352,6 +371,7 @@
 	<option name="fence_gnbd" value="fence_gnbd">GNBD</option>
 	<option name="fence_egenera" value="fence_egenera">Egenera SAN Controller</option>
 	<option name="fence_ilo" value="fence_ilo">HP iLO</option>
+	<option name="fence_ilo_mp" value="fence_ilo_mp">HP iLO MP</option>
 	<option name="fence_rsa" value="fence_rsa">IBM RSA II</option>
 	<option name="fence_rsb" value="fence_rsb">Fujitsu Siemens RSB</option>
 	<option name="fence_bladecenter" value="fence_bladecenter">IBM Blade Center</option>
@@ -363,6 +383,9 @@
 	<option name="fence_scsi" value="fence_scsi">SCSI Fencing</option>
 	<option name="fence_vmware" value="fence_vmware">VMware Fencing</option>
 	<option name="fence_lpar" value="fence_lpar">LPAR Fencing</option>
+	<option name="fence_cisco_mds" value="fence_cisco_mds">Cisco MDS</option>
+	<option name="fence_ucs" value="fence_ucs">Cisco UCS</option>
+	<option name="fence_ifmib" value="fence_ifmib">IF MIB</option>
 	<option name="fence_manual" value="fence_manual">Manual Fencing</option>
 </div>
 
@@ -676,6 +699,100 @@
 	</div>
 </div>
 
+<div metal:define-macro="fence-form-ilo_mp"
+	tal:attributes="id cur_fencedev/name | nothing">
+
+	<div id="fence_ilo_mp" class="fencedev">
+		<table>
+			<tr>
+				<td><strong class="cluster">Fence Type</strong></td>
+				<td>HP iLO MP</td>
+			</tr>
+			<tr>
+				<td>Name</td>
+				<td>
+					<input name="name" type="text"
+						tal:attributes="value cur_fencedev/name | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>Hostname</td>
+				<td>
+					<input name="ipaddr" type="text"
+						tal:attributes="value cur_fencedev/ipaddr | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>IP port (optional)</td>
+				<td>
+					<input name="ipport" type="text" class="text"
+						tal:attributes="value cur_fencedev/ipport | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>Login</td>
+				<td>
+					<input name="login" type="text"
+						tal:attributes="value cur_fencedev/login | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>Password</td>
+				<td>
+					<input name="passwd" type="password" autocomplete="off"
+						tal:attributes="value cur_fencedev/passwd | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>
+					<span title="Full path to a script to generate fence password">Password Script (optional)</span>
+				</td>
+				<td>
+					<input type="text" name="passwd_script"
+						tal:attributes="
+							value cur_fencedev/passwd_script | nothing" />
+				</td>
+			</tr>
+			<tr tal:condition="exists:clusterinfo/has_fence_ssh">
+				<td>
+					<span title="Enable SSH operation">Use SSH</span>
+				</td>
+				<td>
+					<input tal:condition="exists:cur_fencedev"
+						type="checkbox" name="secure"
+						tal:attributes="
+							checked python:(cur_fencedev and cur_fencedev.has_key('secure') and (cur_fencedev['secure'] == '1' or cur_fencedev['secure'].lower() == 'true')) and 'checked' or ''" />
+					<input tal:condition="not:exists:cur_fencedev"
+						type="checkbox" name="secure" />
+				</td>
+			</tr>
+			<tr>
+				<td>Force command prompt</td>
+				<td>
+					<input type="text" class="text" name="cmd_prompt"
+						tal:attributes="value cur_fencedev/cmd_prompt | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>Power wait (seconds)</td>
+				<td>
+					<input type="text" name="power_wait"
+						tal:attributes="
+							value cur_fencedev/power_wait | nothing" />
+				</td>
+			</tr>
+		</table>
+
+		<tal:block tal:condition="exists: cur_fencedev">
+			<input type="hidden" name="existing_device" value="1" />
+			<input type="hidden" name="orig_name"
+				tal:attributes="value cur_fencedev/name | nothing" />
+		</tal:block>
+
+		<input type="hidden" name="fence_type" value="fence_ilo_mp" />
+	</div>
+</div>
+
 <div metal:define-macro="fence-form-drac"
 	tal:attributes="id cur_fencedev/name | nothing">
 
@@ -1727,134 +1844,635 @@
 	</div>
 </div>
 
-<div metal:define-macro="fence-form-list">
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-apc" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-mcdata" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-wti" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ilo" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-drac" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-rsa" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-rsb" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-brocade" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-sanbox2" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-vixel" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-gnbd" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-egenera" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-bladecenter" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-bullpap" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-rps10" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ipmilan" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-xvm" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-scsi" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-lpar" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-vmware" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-manual" />
-</div>
-
-<div metal:define-macro="shared-fence-form-list">
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-apc" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-mcdata" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-wti" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-brocade" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-sanbox2" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-vixel" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-gnbd" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-egenera" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-bladecenter" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-bullpap" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-xvm" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-scsi" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-lpar" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-vmware" />
-</div>
-
-<div metal:define-macro="shared-fence-device-list">
-	<tal:block tal:condition="exists: cur_fencedev">
-		<tal:block tal:define="cur_fence_type cur_fencedev/agent | nothing">
-			<tal:block metal:use-macro="here/fence-macros/macros/fencedev-cond-ladder" />
-		</tal:block>
-	</tal:block>
-</div>
-
-<div metal:define-macro="fence-instance-form-apc"
-	tal:omit-tag="exists: cur_fence_dev_id">
+<div metal:define-macro="fence-form-ucs"
+	tal:attributes="id cur_fencedev/name | nothing">
 
-	<div id="fence_apc_instance" name="fence_apc" class="fencedev_instance"
-		tal:omit-tag="exists: cur_fence_dev_id">
+	<div id="fence_ucs" class="fencedev">
 		<table>
 			<tr>
-				<td>Port</td>
+				<td><strong class="cluster">Fence Type</strong></td>
+				<td>Cisco UCS</td>
+			</tr>
+			<tr>
+				<td>Name</td>
 				<td>
-					<input name="port" type="text"
-						tal:attributes="value cur_instance/port | nothing" />
+					<input name="name" type="text"
+						tal:attributes="value cur_fencedev/name | nothing" />
 				</td>
 			</tr>
 			<tr>
-				<td>Switch (optional)</td>
+				<td>IP Address</td>
 				<td>
-					<input name="switch" type="text"
-						tal:attributes="value cur_instance/switch | nothing" />
+					<input name="ipaddr" type="text"
+						tal:attributes="value cur_fencedev/ipaddr | nothing" />
 				</td>
 			</tr>
-			<tr tal:condition="exists:clusterinfo/has_fence_ssh">
+			<tr>
+				<td>IP port (optional)</td>
 				<td>
-					<span title="Enable SSH operation">Use SSH</span>
+					<input name="ipport" type="text" class="text"
+						tal:attributes="value cur_fencedev/ipport | nothing" />
 				</td>
+			</tr>
+			<tr>
+				<td>Login</td>
 				<td>
-					<input tal:condition="exists:cur_instance"
-						type="checkbox" name="secure"
+					<input name="login" type="text"
+						tal:attributes="value cur_fencedev/login | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>Password</td>
+				<td>
+					<input name="passwd" type="password" autocomplete="off"
+						tal:attributes="value cur_fencedev/passwd | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>
+					<span title="Full path to a script to generate fence password">Password Script (optional)</span>
+				</td>
+				<td>
+					<input type="text" name="passwd_script"
 						tal:attributes="
-							checked python:(cur_instance and cur_instance.has_key('secure') and (cur_instance['secure'] == '1' or cur_instance['secure'].lower() == 'true')) and 'checked' or ''" />
-					<input tal:condition="not:exists:cur_instance"
-						type="checkbox" name="secure" />
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/passwd_script | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>Use SSL connections</td>
+				<td>
+					<input tal:condition="exists:cur_fencedev"
+						type="checkbox" name="ssl"
+						tal:attributes="
+							checked python:(cur_fencedev and cur_fencedev.has_key('ssl') and (cur_fencedev['ssl'] == '1' or cur_fencedev['ssl'].lower() == 'true')) and 'checked' or ''" />
+					<input tal:condition="not:exists:cur_fencedev"
+						type="checkbox" name="ssl" />
+				</td>
+			</tr>
+			<tr>
+				<td>Power wait (seconds)</td>
+				<td>
+					<input type="text" name="power_wait"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/power_wait | nothing" />
 				</td>
 			</tr>
-			<tr><td colspan="2">
-				<div class="hbSubmit">
-					<tal:block tal:condition="exists:cur_fence_instance_id">
-						<input type="button" name="remove_fence"
-							value="Remove this instance"
-							tal:attributes="onclick python: 'del_fence_instance(\'' + cur_fence_instance_id + '\')'" />
-					</tal:block>
-					<tal:block tal:condition="not:exists:cur_fence_instance_id">
-						<input type="button" name="remove_fence"
-							value="Remove this instance" />
-					</tal:block>
-				</div>
-			</td></tr>
 		</table>
 
-		<input type="hidden" name="option" tal:condition="exists:cur_instance"
-			tal:attributes="value cur_instance/option |nothing" />
-		<input type="hidden" name="fence_type" value="fence_apc" />
-		<input type="hidden" name="fence_instance" value="1" />
-		<input tal:condition="exists: cur_instance"
-			type="hidden" name="existing_instance" value="1" />
-		<input type="hidden" name="parent_fencedev"
-			tal:attributes="value cur_fence_dev_id | nothing" />
+		<tal:block tal:condition="exists: cur_fencedev">
+			<input type="hidden" name="existing_device" value="1" />
+			<input type="hidden" name="orig_name"
+				tal:attributes="value cur_fencedev/name | nothing" />
+		</tal:block>
+
+		<input type="hidden" name="fence_type" value="fence_ucs" />
+		<input type="hidden" name="sharable" value="1" />
 	</div>
 </div>
 
-<div metal:define-macro="fence-instance-form-lpar"
-	tal:omit-tag="exists: cur_fence_dev_id">
-	<div id="fence_lpar_instance" name="fence_lpar" class="fencedev_instance"
-		tal:omit-tag="exists: cur_fence_dev_id">
+<div metal:define-macro="fence-form-ifmib"
+	tal:attributes="id cur_fencedev/name | nothing">
+
+	<div id="fence_ifmib" class="fencedev">
 		<table>
 			<tr>
-				<td>Partition</td>
+				<td><strong class="cluster">Fence Type</strong></td>
+				<td>IF MIB</td>
+			</tr>
+			<tr>
+				<td>Name</td>
 				<td>
-					<input name="partition" type="text"
+					<input name="name" type="text"
 						tal:attributes="
-							value cur_instance/partition | nothing" />
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/name | nothing" />
 				</td>
 			</tr>
-
 			<tr>
-				<td>Managed System</td>
+				<td>IP address or hostname</td>
 				<td>
-					<input name="managed" type="text"
+					<input name="ipaddr" type="text"
 						tal:attributes="
-							value cur_instance/managed | nothing" />
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/ipaddr | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>UDP/TCP port (optional, defaults to 161)</td>
+				<td>
+					<input name="udpport" type="text"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/udpport | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>Login</td>
+				<td>
+					<input name="login" type="text"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/login | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>Password</td>
+				<td>
+					<input name="passwd" type="password" autocomplete="off"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/passwd | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>
+					<span title="Full path to a script to generate fence password">Password Script (optional)</span>
+				</td>
+				<td>
+					<input type="text" name="passwd_script"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/passwd_script | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>SNMP version</td>
+				<td>
+					<select name="snmp_version"
+						tal:define="snmp_version cur_fencedev/snmp_version | string:default"
+						tal:attributes="disabled cur_fencedev/isShared | nothing">
+						<option value=""
+							tal:content="string:Default"
+							tal:attributes="selected python: snmp_version == 'default' and 'selected'"/>
+						<option value="1"
+							tal:content="string:1"
+							tal:attributes="selected python: snmp_version == '1' and 'selected'"/>
+						<option value="2c"
+							tal:content="string:2c"
+							tal:attributes="selected python: snmp_version == '2c' and 'selected'"/>
+						<option value="3"
+							tal:content="string:3"
+							tal:attributes="selected python: snmp_version == '3' and 'selected'"/>
+					</select>
+				</td>
+			</tr>
+			<tr>
+				<td>SNMP community</td>
+				<td>
+					<input name="community" type="text"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/community | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>SNMP security level</td>
+				<td>
+					<select name="snmp_sec_level"
+						tal:define="snmp_sec_level cur_fencedev/snmp_sec_level | string:default"
+						tal:attributes="disabled cur_fencedev/isShared | nothing">
+						<option value=""
+							tal:content="string:Default"
+							tal:attributes="selected python: snmp_sec_level == 'default' and 'selected'"/>
+
+						<option value="noAuthNoPriv"
+							tal:content="string:noAuthNoPriv"
+							tal:attributes="selected python: snmp_sec_level == 'noAuthNoPriv' and 'selected'"/>
+
+						<option value="authNoPriv"
+							tal:content="string:authNoPriv"
+							tal:attributes="selected python: snmp_sec_level == 'authNoPriv' and 'selected'"/>
+
+						<option value="authPriv"
+							tal:content="string:authPriv"
+							tal:attributes="selected python: snmp_sec_level == 'authPriv' and 'selected'"/>
+					</select>
+				</td>
+			</tr>
+			<tr>
+				<td>SNMP authentication protocol</td>
+				<td>
+					<select name="snmp_auth_prot"
+						tal:define="snmp_auth_prot cur_fencedev/snmp_auth_prot | string:default"
+						tal:attributes="disabled cur_fencedev/isShared | nothing">
+						<option value=""
+							tal:content="string:Default"
+							tal:attributes="selected python: snmp_auth_prot == 'default' and 'selected'"/>
+
+						<option value=""
+							tal:content="string:Default"
+							tal:attributes="selected python: snmp_auth_prot == 'default' and 'selected'"/>
+
+						<option value="MD5"
+							tal:content="string:MD5"
+							tal:attributes="selected python: snmp_auth_prot == 'MD5' and 'selected'"/>
+
+						<option value="SHA"
+							tal:content="string:SHA"
+							tal:attributes="selected python: snmp_auth_prot == 'SHA' and 'selected'"/>
+					</select>
+				</td>
+			</tr>
+			<tr>
+				<td>SNMP privacy protocol</td>
+				<td>
+					<select name="snmp_priv_prot"
+						tal:define="snmp_priv_prot cur_fencedev/snmp_priv_prot | string:default"
+						tal:attributes="disabled cur_fencedev/isShared | nothing">
+						<option value=""
+							tal:content="string:Default"
+							tal:attributes="selected python: snmp_priv_prot == 'default' and 'selected'"/>
+						<option value="DES"
+							tal:content="string:DES"
+							tal:attributes="selected python: snmp_priv_prot == 'DES' and 'selected'"/>
+						<option value="AES"
+							tal:content="string:AES"
+							tal:attributes="selected python: snmp_priv_prot == 'AES' and 'selected'"/>
+					</select>
+				</td>
+			</tr>
+			<tr>
+				<td>SNMP privacy protocol password</td>
+				<td>
+					<input name="snmp_priv_passwd" type="password" autocomplete="off"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/snmp_priv_passwd | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>
+					SNMP privacy protocol script
+				</td>
+				<td>
+					<input type="text" name="snmp_priv_passwd_script"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/snmp_priv_passwd_script | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>Power wait (seconds)</td>
+				<td>
+					<input type="text" name="power_wait"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/power_wait | nothing" />
+				</td>
+			</tr>
+		</table>
+
+		<tal:block tal:condition="exists: cur_fencedev">
+			<input type="hidden" name="existing_device" value="1" />
+			<input type="hidden" name="orig_name"
+				tal:attributes="value cur_fencedev/name | nothing" />
+		</tal:block>
+
+		<input type="hidden" name="sharable" value="1" />
+		<input type="hidden" name="fence_type" value="fence_ifmib" />
+	</div>
+</div>
+
+<div metal:define-macro="fence-form-cisco_mds"
+	tal:attributes="id cur_fencedev/name | nothing">
+
+	<div id="fence_cisco_mds" class="fencedev">
+		<table>
+			<tr>
+				<td><strong class="cluster">Fence Type</strong></td>
+				<td>Cisco MDS</td>
+			</tr>
+			<tr>
+				<td>Name</td>
+				<td>
+					<input name="name" type="text"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/name | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>IP address or hostname</td>
+				<td>
+					<input name="ipaddr" type="text"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/ipaddr | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>UDP/TCP port (optional, defaults to 161)</td>
+				<td>
+					<input name="udpport" type="text"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/udpport | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>Login</td>
+				<td>
+					<input name="login" type="text"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/login | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>Password</td>
+				<td>
+					<input name="passwd" type="password" autocomplete="off"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/passwd | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>
+					<span title="Full path to a script to generate fence password">Password Script (optional)</span>
+				</td>
+				<td>
+					<input type="text" name="passwd_script"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/passwd_script | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>SNMP version</td>
+				<td>
+					<select name="snmp_version"
+						tal:define="snmp_version cur_fencedev/snmp_version | string:default"
+						tal:attributes="disabled cur_fencedev/isShared | nothing">
+						<option value=""
+							tal:content="string:Default"
+							tal:attributes="selected python: snmp_version == 'default' and 'selected'"/>
+						<option value="1"
+							tal:content="string:1"
+							tal:attributes="selected python: snmp_version == '1' and 'selected'"/>
+						<option value="2c"
+							tal:content="string:2c"
+							tal:attributes="selected python: snmp_version == '2c' and 'selected'"/>
+						<option value="3"
+							tal:content="string:3"
+							tal:attributes="selected python: snmp_version == '3' and 'selected'"/>
+					</select>
+				</td>
+			</tr>
+			<tr>
+				<td>SNMP community</td>
+				<td>
+					<input name="community" type="text"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/community | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>SNMP security level</td>
+				<td>
+					<select name="snmp_sec_level"
+						tal:define="snmp_sec_level cur_fencedev/snmp_sec_level | string:default"
+						tal:attributes="disabled cur_fencedev/isShared | nothing">
+						<option value=""
+							tal:content="string:Default"
+							tal:attributes="selected python: snmp_sec_level == 'default' and 'selected'"/>
+
+						<option value="noAuthNoPriv"
+							tal:content="string:noAuthNoPriv"
+							tal:attributes="selected python: snmp_sec_level == 'noAuthNoPriv' and 'selected'"/>
+
+						<option value="authNoPriv"
+							tal:content="string:authNoPriv"
+							tal:attributes="selected python: snmp_sec_level == 'authNoPriv' and 'selected'"/>
+
+						<option value="authPriv"
+							tal:content="string:authPriv"
+							tal:attributes="selected python: snmp_sec_level == 'authPriv' and 'selected'"/>
+					</select>
+				</td>
+			</tr>
+			<tr>
+				<td>SNMP authentication protocol</td>
+				<td>
+					<select name="snmp_auth_prot"
+						tal:define="snmp_auth_prot cur_fencedev/snmp_auth_prot | string:default"
+						tal:attributes="disabled cur_fencedev/isShared | nothing">
+						<option value=""
+							tal:content="string:Default"
+							tal:attributes="selected python: snmp_auth_prot == 'default' and 'selected'"/>
+
+						<option value=""
+							tal:content="string:Default"
+							tal:attributes="selected python: snmp_auth_prot == 'default' and 'selected'"/>
+
+						<option value="MD5"
+							tal:content="string:MD5"
+							tal:attributes="selected python: snmp_auth_prot == 'MD5' and 'selected'"/>
+
+						<option value="SHA"
+							tal:content="string:SHA"
+							tal:attributes="selected python: snmp_auth_prot == 'SHA' and 'selected'"/>
+					</select>
+				</td>
+			</tr>
+			<tr>
+				<td>SNMP privacy protocol</td>
+				<td>
+					<select name="snmp_priv_prot"
+						tal:define="snmp_priv_prot cur_fencedev/snmp_priv_prot | string:default"
+						tal:attributes="disabled cur_fencedev/isShared | nothing">
+						<option value=""
+							tal:content="string:Default"
+							tal:attributes="selected python: snmp_priv_prot == 'default' and 'selected'"/>
+						<option value="DES"
+							tal:content="string:DES"
+							tal:attributes="selected python: snmp_priv_prot == 'DES' and 'selected'"/>
+						<option value="AES"
+							tal:content="string:AES"
+							tal:attributes="selected python: snmp_priv_prot == 'AES' and 'selected'"/>
+					</select>
+				</td>
+			</tr>
+			<tr>
+				<td>SNMP privacy protocol password</td>
+				<td>
+					<input name="snmp_priv_passwd" type="password" autocomplete="off"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/snmp_priv_passwd | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>
+					SNMP privacy protocol script
+				</td>
+				<td>
+					<input type="text" name="snmp_priv_passwd_script"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/snmp_priv_passwd_script | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>Power wait (seconds)</td>
+				<td>
+					<input type="text" name="power_wait"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/power_wait | nothing" />
+				</td>
+			</tr>
+		</table>
+
+		<tal:block tal:condition="exists: cur_fencedev">
+			<input type="hidden" name="existing_device" value="1" />
+			<input type="hidden" name="orig_name"
+				tal:attributes="value cur_fencedev/name | nothing" />
+		</tal:block>
+
+		<input type="hidden" name="sharable" value="1" />
+		<input type="hidden" name="fence_type" value="fence_cisco_mds" />
+	</div>
+</div>
+
+<div metal:define-macro="fence-form-list">
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-apc" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-mcdata" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-wti" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ilo" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ilo_mp" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-drac" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-rsa" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-rsb" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-brocade" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-sanbox2" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-vixel" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-gnbd" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-egenera" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-bladecenter" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-bullpap" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-rps10" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ipmilan" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-xvm" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-scsi" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-lpar" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-vmware" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ifmib" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-cisco_mds" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ucs" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-manual" />
+</div>
+
+<div metal:define-macro="shared-fence-form-list">
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-apc" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-mcdata" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-wti" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-brocade" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-sanbox2" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-vixel" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-gnbd" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-egenera" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-bladecenter" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-bullpap" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-xvm" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-scsi" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-lpar" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-vmware" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ifmib" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-cisco_mds" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ucs" />
+</div>
+
+<div metal:define-macro="shared-fence-device-list">
+	<tal:block tal:condition="exists: cur_fencedev">
+		<tal:block tal:define="cur_fence_type cur_fencedev/agent | nothing">
+			<tal:block metal:use-macro="here/fence-macros/macros/fencedev-cond-ladder" />
+		</tal:block>
+	</tal:block>
+</div>
+
+<div metal:define-macro="fence-instance-form-apc"
+	tal:omit-tag="exists: cur_fence_dev_id">
+
+	<div id="fence_apc_instance" name="fence_apc" class="fencedev_instance"
+		tal:omit-tag="exists: cur_fence_dev_id">
+		<table>
+			<tr>
+				<td>Port</td>
+				<td>
+					<input name="port" type="text"
+						tal:attributes="value cur_instance/port | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>Switch (optional)</td>
+				<td>
+					<input name="switch" type="text"
+						tal:attributes="value cur_instance/switch | nothing" />
+				</td>
+			</tr>
+			<tr tal:condition="exists:clusterinfo/has_fence_ssh">
+				<td>
+					<span title="Enable SSH operation">Use SSH</span>
+				</td>
+				<td>
+					<input tal:condition="exists:cur_instance"
+						type="checkbox" name="secure"
+						tal:attributes="
+							checked python:(cur_instance and cur_instance.has_key('secure') and (cur_instance['secure'] == '1' or cur_instance['secure'].lower() == 'true')) and 'checked' or ''" />
+					<input tal:condition="not:exists:cur_instance"
+						type="checkbox" name="secure" />
+				</td>
+			</tr>
+			<tr><td colspan="2">
+				<div class="hbSubmit">
+					<tal:block tal:condition="exists:cur_fence_instance_id">
+						<input type="button" name="remove_fence"
+							value="Remove this instance"
+							tal:attributes="onclick python: 'del_fence_instance(\'' + cur_fence_instance_id + '\')'" />
+					</tal:block>
+					<tal:block tal:condition="not:exists:cur_fence_instance_id">
+						<input type="button" name="remove_fence"
+							value="Remove this instance" />
+					</tal:block>
+				</div>
+			</td></tr>
+		</table>
+
+		<input type="hidden" name="option" tal:condition="exists:cur_instance"
+			tal:attributes="value cur_instance/option |nothing" />
+		<input type="hidden" name="fence_type" value="fence_apc" />
+		<input type="hidden" name="fence_instance" value="1" />
+		<input tal:condition="exists: cur_instance"
+			type="hidden" name="existing_instance" value="1" />
+		<input type="hidden" name="parent_fencedev"
+			tal:attributes="value cur_fence_dev_id | nothing" />
+	</div>
+</div>
+
+<div metal:define-macro="fence-instance-form-lpar"
+	tal:omit-tag="exists: cur_fence_dev_id">
+	<div id="fence_lpar_instance" name="fence_lpar" class="fencedev_instance"
+		tal:omit-tag="exists: cur_fence_dev_id">
+		<table>
+			<tr>
+				<td>Partition</td>
+				<td>
+					<input name="partition" type="text"
+						tal:attributes="
+							value cur_instance/partition | nothing" />
+				</td>
+			</tr>
+
+			<tr>
+				<td>Managed System</td>
+				<td>
+					<input name="managed" type="text"
+						tal:attributes="
+							value cur_instance/managed | nothing" />
 				</td>
 			</tr>
 
@@ -2377,6 +2995,120 @@
 	</div>
 </div>
 
+<div metal:define-macro="fence-instance-form-ucs"
+	tal:omit-tag="exists: cur_fence_dev_id">
+	<div id="fence_ucs_instance" name="fence_ucs" class="fencedev_instance"
+		tal:omit-tag="exists: cur_fence_dev_id">
+		<table>
+			<tr>
+				<td>Port</td>
+				<td>
+					<input name="port" type="text"
+						tal:attributes="value cur_instance/port | nothing" />
+				</td>
+			</tr>
+			<tr><td colspan="2">
+				<div class="hbSubmit">
+					<tal:block tal:condition="exists:cur_fence_instance_id">
+						<input type="button" name="remove_fence"
+							value="Remove this instance"
+							tal:attributes="onclick python: 'del_fence_instance(\'' + cur_fence_instance_id + '\')'" />
+					</tal:block>
+					<tal:block tal:condition="not:exists:cur_fence_instance_id">
+						<input type="button" name="remove_fence"
+							value="Remove this instance" />
+					</tal:block>
+				</div>
+			</td></tr>
+		</table>
+
+		<input type="hidden" name="option" tal:condition="exists:cur_instance"
+			tal:attributes="value cur_instance/option |nothing" />
+		<input type="hidden" name="fence_type" value="fence_ucs" />
+		<input type="hidden" name="fence_instance" value="1" />
+		<input tal:condition="exists: cur_instance"
+			type="hidden" name="existing_instance" value="1" />
+		<input type="hidden" name="parent_fencedev"
+			tal:attributes="value cur_fence_dev_id | nothing" />
+	</div>
+</div>
+
+<div metal:define-macro="fence-instance-form-ifmib"
+	tal:omit-tag="exists: cur_fence_dev_id">
+	<div id="fence_ifmib_instance" name="fence_ifmib" class="fencedev_instance"
+		tal:omit-tag="exists: cur_fence_dev_id">
+		<table>
+			<tr>
+				<td>Port</td>
+				<td>
+					<input name="port" type="text"
+						tal:attributes="value cur_instance/port | nothing" />
+				</td>
+			</tr>
+			<tr><td colspan="2">
+				<div class="hbSubmit">
+					<tal:block tal:condition="exists:cur_fence_instance_id">
+						<input type="button" name="remove_fence"
+							value="Remove this instance"
+							tal:attributes="onclick python: 'del_fence_instance(\'' + cur_fence_instance_id + '\')'" />
+					</tal:block>
+					<tal:block tal:condition="not:exists:cur_fence_instance_id">
+						<input type="button" name="remove_fence"
+							value="Remove this instance" />
+					</tal:block>
+				</div>
+			</td></tr>
+		</table>
+
+		<input type="hidden" name="option" tal:condition="exists:cur_instance"
+			tal:attributes="value cur_instance/option |nothing" />
+		<input type="hidden" name="fence_type" value="fence_ifmib" />
+		<input type="hidden" name="fence_instance" value="1" />
+		<input tal:condition="exists: cur_instance"
+			type="hidden" name="existing_instance" value="1" />
+		<input type="hidden" name="parent_fencedev"
+			tal:attributes="value cur_fence_dev_id | nothing" />
+	</div>
+</div>
+
+<div metal:define-macro="fence-instance-form-cisco_mds"
+	tal:omit-tag="exists: cur_fence_dev_id">
+	<div id="fence_cisco_mds_instance" name="fence_cisco_mds" class="fencedev_instance"
+		tal:omit-tag="exists: cur_fence_dev_id">
+		<table>
+			<tr>
+				<td>Port</td>
+				<td>
+					<input name="port" type="text"
+						tal:attributes="value cur_instance/port | nothing" />
+				</td>
+			</tr>
+			<tr><td colspan="2">
+				<div class="hbSubmit">
+					<tal:block tal:condition="exists:cur_fence_instance_id">
+						<input type="button" name="remove_fence"
+							value="Remove this instance"
+							tal:attributes="onclick python: 'del_fence_instance(\'' + cur_fence_instance_id + '\')'" />
+					</tal:block>
+					<tal:block tal:condition="not:exists:cur_fence_instance_id">
+						<input type="button" name="remove_fence"
+							value="Remove this instance" />
+					</tal:block>
+				</div>
+			</td></tr>
+		</table>
+
+		<input type="hidden" name="option" tal:condition="exists:cur_instance"
+			tal:attributes="value cur_instance/option |nothing" />
+		<input type="hidden" name="fence_type" value="fence_cisco_mds" />
+		<input type="hidden" name="fence_instance" value="1" />
+		<input tal:condition="exists: cur_instance"
+			type="hidden" name="existing_instance" value="1" />
+		<input type="hidden" name="parent_fencedev"
+			tal:attributes="value cur_fence_dev_id | nothing" />
+	</div>
+</div>
+
 <div metal:define-macro="fence-instance-form-list">
 	<tal:block
 		metal:use-macro="here/fence-macros/macros/fence-instance-form-apc" />
@@ -2406,6 +3138,13 @@
 		metal:use-macro="here/fence-macros/macros/fence-instance-form-xvm" />
 	<tal:block
 		metal:use-macro="here/fence-macros/macros/fence-instance-form-bladecenter" />
+	<tal:block
+		metal:use-macro="here/fence-macros/macros/fence-instance-form-cisco_mds" />
+	<tal:block
+		metal:use-macro="here/fence-macros/macros/fence-instance-form-ifmib" />
+
+	<tal:block
+		metal:use-macro="here/fence-macros/macros/fence-instance-form-ucs" />
 </div>
 
 <div metal:define-macro="fencedev-instance-cond-ladder"
@@ -2480,6 +3219,21 @@
 		<tal:block
 			metal:use-macro="here/fence-macros/macros/fence-instance-form-bladecenter" />
 	</tal:block>
+
+	<tal:block tal:condition="python: cur_fence_type == 'fence_cisco_mds'">
+		<tal:block
+			metal:use-macro="here/fence-macros/macros/fence-instance-form-cisco_mds" />
+	</tal:block>
+
+	<tal:block tal:condition="python: cur_fence_type == 'fence_ifmib'">
+		<tal:block
+			metal:use-macro="here/fence-macros/macros/fence-instance-form-ifmib" />
+	</tal:block>
+
+	<tal:block tal:condition="python: cur_fence_type == 'fence_ucs'">
+		<tal:block
+			metal:use-macro="here/fence-macros/macros/fence-instance-form-ucs" />
+	</tal:block>
 </div>
 
 </body>
--- conga/luci/cluster/resource-form-macros	2010/08/07 03:16:01	1.21.2.17
+++ conga/luci/cluster/resource-form-macros	2010/09/29 17:08:24	1.21.2.18
@@ -32,7 +32,29 @@
 				<td tal:define="isubtree res/attrs/__independent_subtree|nothing">
 					<input class="vanilla" type="checkbox"
 						name="__independent_subtree"
-						tal:attributes="checked python:(isubtree in ['1', 'true', 'True', True, 1]) and 'checked' or None" />
+						tal:attributes="checked python:(isubtree in ['1', 1]) and 'checked' or None" />
+				</td>
+			</tr>
+			<tr>
+				<td>This resource is non-critical</td>
+				<td tal:define="isubtree res/attrs/__independent_subtree|nothing">
+					<input class="vanilla" type="checkbox"
+						name="__independent_subtree_noncritical"
+						tal:attributes="checked python:(isubtree in ['2', 2]) and 'checked' or None" />
+				</td>
+			</tr>
+			<tr>
+				<td>Maximum number of restart failures before giving up<br>(applies only for non-critical resources)</td>
+				<td>
+					<input type="text" name="__max_restarts" size="3"
+						tal:attributes="value res/attrs/__max_restarts|nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>Restart expire time<br>(applies only for non-critical resources)</td>
+				<td>
+					<input type="text" name="__restart_expire_time" size="3"
+						tal:attributes="value res/attrs/__restart_expire_time|nothing" />
 				</td>
 			</tr>
 		</table>
@@ -478,6 +500,12 @@
 					<option name="ext2" value="ext2"
 						tal:content="string: ext2"
 						tal:attributes="selected python: fstype == 'ext2' and 'selected'" />
+					<option name="ext4" value="ext4"
+						tal:content="string: ext4"
+						tal:attributes="selected python: fstype == 'ext4' and 'selected'" />
+					<option name="xfs" value="xfs"
+						tal:content="string: xfs"
+						tal:attributes="selected python: fstype == 'xfs' and 'selected'" />
 				</select>
 			</td>
 		</tr>
--- conga/luci/cluster/validate_config_multicast.js	2010/08/05 18:01:15	1.3.2.5
+++ conga/luci/cluster/validate_config_multicast.js	2010/09/29 17:08:24	1.3.2.6
@@ -56,6 +56,8 @@
 		mcast = 0;
 	else if (form.mcast.length > 1 && form.mcast[1].checked)
 		mcast = 1;
+	else if (form.mcast[2].checked)
+		mcast = null;
 	else {
 		errors.push('An invalid value was given while specifying how the multicast address should be chosen.');
 		set_form_err(form.mcast[0]);
--- conga/luci/cluster/validate_fence.js	2010/08/05 17:33:05	1.1.2.13
+++ conga/luci/cluster/validate_fence.js	2010/09/29 17:08:24	1.1.2.14
@@ -22,6 +22,9 @@
 fence_inst_validator['xvm'] = [ 'domain' ];
 fence_inst_validator['lpar'] = [ 'partition', 'managed' ];
 fence_inst_validator['vmware'] = [ 'port' ];
+fence_inst_validator['cisco_mds'] = [ 'port' ];
+fence_inst_validator['ifmib'] = [ 'port' ];
+fence_inst_validator['ucs'] = [ 'port' ];
 
 var fence_validator = [];
 fence_validator['apc'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script' ];
@@ -32,6 +35,7 @@
 fence_validator['egenera'] = [ 'cserver' ];
 fence_validator['gnbd'] = [ 'servers' ];
 fence_validator['ilo'] = [ 'hostname', 'login', 'passwd', 'passwd_script', 'secure' ];
+fence_validator['ilo_mp'] = [ 'hostname', 'login', 'passwd', 'passwd_script', 'secure', 'ipport', 'secure', 'cmd_prompt' ];
 fence_validator['ipmilan'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script', 'lanplus', 'auth' ];
 fence_validator['manual'] = [];
 fence_validator['mcdata'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script' ];
@@ -44,6 +48,9 @@
 fence_validator['vixel'] = [ 'ipaddr', 'passwd', 'passwd_script' ];
 fence_validator['wti'] = [ 'ipaddr', 'passwd', 'passwd_script' ];
 fence_validator['lpar'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script' ];
+fence_validator['cisco_mds'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script' ];
+fence_validator['ifmib'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script' ];
+fence_validator['ucs'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script' ];
 fence_validator['vmware'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script', 'vmlogin' ];
 fence_validator['xvm'] = [];
 
--- conga/luci/docs/Makefile	2008/01/23 04:44:31	1.2.2.1
+++ conga/luci/docs/Makefile	2010/09/29 17:08:24	1.2.2.2
@@ -8,6 +8,8 @@
 ##
 ################################################################################
 
+include ../make/defines.mk
+
 LUCI_HOST=luci
 LUCI_USER=admin
 LUCI_PASS=changeme
@@ -20,6 +22,8 @@
 docs:
 
 install:
+	install -d ${mandir}/man8
+	install luci_admin.8 ${mandir}/man8
 
 clean:
 
--- conga/luci/plone-custom/conga.js	2010/08/07 02:39:59	1.3.2.10
+++ conga/luci/plone-custom/conga.js	2010/09/29 17:08:24	1.3.2.11
@@ -223,7 +223,7 @@
 		return (null);
 	}
 
-	if (!isNaN(parseInt(i[i.length - 1], 10))) {
+	if (!isNaN(Number(i[i.length - 1]))) {
 		return ('Invalid IP address.');
 	}
 
--- conga/luci/site/luci/Extensions/FenceHandler.py	2010/08/07 04:11:22	1.4.2.22
+++ conga/luci/site/luci/Extensions/FenceHandler.py	2010/09/29 17:08:25	1.4.2.23
@@ -776,6 +776,267 @@
 
 	return errors
 
+def val_ucs_fd(form, fencedev):
+	errors = list()
+
+	try:
+		ip = form['ipaddr'].strip()
+		if not ip:
+			raise Exception, 'blank'
+		fencedev.addAttribute('ipaddr', ip)
+	except Exception, e:
+		errors.append(FD_PROVIDE_IP)
+
+	try:
+		log = form['login'].strip()
+		if not log:
+			raise Exception, 'blank'
+		fencedev.addAttribute('login', log)
+	except Exception, e:
+		errors.append(FD_PROVIDE_LOGIN)
+
+	try:
+		power_wait = form['power_wait'].strip()
+		if power_wait:
+			power_wait = int(power_wait)
+			if power_wait < 0:
+				raise ValueError
+	except (KeyError, AttributeError), e:
+		power_wait = None
+	except Exception, e:
+		power_wait = None
+		errors.append('An invalid value for power_wait was given: "%s"' % form['power_wait'])
+	if power_wait:
+		fencedev.addAttribute('power_wait', str(power_wait))
+	else:
+		fencedev.removeAttribute('power_wait')
+
+	try:
+		ipport = form['ipport'].strip()
+		if ipport:
+			ipport = int(ipport)
+			if ipport < 1 or ipport & 0xffff != ipport:
+				raise ValueError
+	except (KeyError, AttributeError), e:
+		ipport = None
+	except Exception, e:
+		ipport = None
+		errors.append('An invalid value for ipport was given: "%s"' % form['ipport'])
+	if ipport:
+		fencedev.addAttribute('ipport', str(ipport))
+	else:
+		fencedev.removeAttribute('ipport')
+
+	use_ssl = form.has_key('ssl') and form['ssl'].lower() in ('1', 'on', 'true')
+	if use_ssl:
+		fencedev.addAttribute('ssl', '1')
+	else:
+		fencedev.removeAttribute('ssl')
+
+	has_passwd = False
+	try:
+		pwd = form['passwd'].strip()
+		if not pwd:
+			# Allow passwords that consist of only spaces.
+			if not form.has_key('passwd') or form['passwd'] == '':
+				raise Exception, 'blank'
+			else:
+				pwd = form['passwd']
+		fencedev.addAttribute('passwd', pwd)
+		has_passwd = True
+	except Exception, e:
+		try:
+			fencedev.removeAttribute('passwd')
+		except:
+			pass
+
+	try:
+		pwd_script = form['passwd_script'].strip()
+		if not pwd_script:
+			raise Exception, 'blank'
+		fencedev.addAttribute('passwd_script', pwd_script)
+		has_passwd = True
+	except Exception, e:
+		try:
+			fencedev.removeAttribute('passwd_script')
+		except:
+			pass
+
+	if not has_passwd:
+		errors.append(FD_PROVIDE_PASSWD)
+
+	return errors
+
+def val_cisco_mds_fd(form, fencedev):
+	errors = list()
+
+	try:
+		ip = form['ipaddr'].strip()
+		if not ip:
+			raise Exception, 'blank'
+		fencedev.addAttribute('ipaddr', ip)
+	except Exception, e:
+		errors.append(FD_PROVIDE_IP)
+
+	try:
+		log = form['login'].strip()
+		if not log:
+			raise Exception, 'blank'
+		fencedev.addAttribute('login', log)
+	except Exception, e:
+		errors.append(FD_PROVIDE_LOGIN)
+
+	try:
+		power_wait = form['power_wait'].strip()
+		if power_wait:
+			power_wait = int(power_wait)
+			if power_wait < 0:
+				raise ValueError
+	except (KeyError, AttributeError), e:
+		power_wait = None
+	except Exception, e:
+		power_wait = None
+		errors.append('An invalid value for power_wait was given: "%s"' % form['power_wait'])
+	if power_wait:
+		fencedev.addAttribute('power_wait', str(power_wait))
+	else:
+		fencedev.removeAttribute('power_wait')
+
+	try:
+		udpport = form['udpport'].strip()
+		if udpport:
+			udpport = int(udpport)
+			if udpport < 1 or udpport & 0xffff != udpport:
+				raise ValueError
+	except (KeyError, AttributeError), e:
+		udpport = None
+	except Exception, e:
+		udpport = None
+		errors.append('An invalid value for udpport was given: "%s"' % form['udpport'])
+	if udpport:
+		fencedev.addAttribute('udpport', str(udpport))
+	else:
+		fencedev.removeAttribute('udpport')
+
+	try:
+		snmp_community = form['community'].strip()
+	except Exception, e:
+		snmp_community = None
+	if snmp_community:
+		fencedev.addAttribute('community', snmp_community)
+	else:
+		fencedev.removeAttribute('community')
+
+	has_passwd = False
+	try:
+		pwd = form['passwd'].strip()
+		if not pwd:
+			# Allow passwords that consist of only spaces.
+			if not form.has_key('passwd') or form['passwd'] == '':
+				raise Exception, 'blank'
+			else:
+				pwd = form['passwd']
+		fencedev.addAttribute('passwd', pwd)
+		has_passwd = True
+	except Exception, e:
+		try:
+			fencedev.removeAttribute('passwd')
+		except:
+			pass
+
+	try:
+		pwd_script = form['passwd_script'].strip()
+		if not pwd_script:
+			raise Exception, 'blank'
+		fencedev.addAttribute('passwd_script', pwd_script)
+		has_passwd = True
+	except Exception, e:
+		try:
+			fencedev.removeAttribute('passwd_script')
+		except:
+			pass
+
+	if not has_passwd:
+		errors.append(FD_PROVIDE_PASSWD)
+
+	try:
+		pwd = form['snmp_priv_passwd'].strip()
+		if not pwd:
+			# Allow passwords that consist of only spaces.
+			if not form.has_key('snmp_priv_passwd') or form['snmp_priv_passwd'] == '':
+				raise Exception, 'blank'
+			else:
+				pwd = form['snmp_priv_passwd']
+		fencedev.addAttribute('snmp_priv_passwd', pwd)
+		has_passwd = True
+	except Exception, e:
+		try:
+			fencedev.removeAttribute('snmp_priv_passwd')
+		except:
+			pass
+
+	try:
+		pwd_script = form['snmp_priv_passwd_script'].strip()
+		if not pwd_script:
+			raise Exception, 'blank'
+		fencedev.addAttribute('snmp_priv_passwd_script', pwd_script)
+		has_passwd = True
+	except Exception, e:
+		try:
+			fencedev.removeAttribute('snmp_priv_passwd_script')
+		except:
+			pass
+
+	try:
+		snmp_version = form['snmp_version'].strip()
+		if not snmp_version in ('1', '2c', '3'):
+			snmp_version = None
+			raise Exception, 'blank'
+		fencedev.addAttribute('snmp_version', snmp_version)
+	except Exception, e:
+		try:
+			fencedev.removeAttribute('snmp_version')
+		except:
+			pass
+
+	try:
+		snmp_sec_level = form['snmp_sec_level'].strip()
+		if not snmp_sec_level in ('noAuthNoPriv', 'authNoPriv', 'authPriv'):
+			snmp_sec_level = None
+			raise Exception, 'blank'
+		fencedev.addAttribute('snmp_sec_level', snmp_sec_level)
+	except Exception, e:
+		try:
+			fencedev.removeAttribute('snmp_sec_level')
+		except:
+			pass
+
+	try:
+		snmp_auth_prot = form['snmp_auth_prot'].strip()
+		if not snmp_auth_prot in ('MD5', 'SHA'):
+			snmp_auth_prot = None
+			raise Exception, 'blank'
+		fencedev.addAttribute('snmp_auth_prot', snmp_auth_prot)
+	except Exception, e:
+		try:
+			fencedev.removeAttribute('snmp_auth_prot')
+		except:
+			pass
+
+	try:
+		snmp_priv_prot = form['snmp_priv_prot'].strip()
+		if not snmp_priv_prot in ('DES', 'AES'):
+			snmp_priv_prot = None
+			raise Exception, 'blank'
+		fencedev.addAttribute('snmp_priv_prot', snmp_priv_prot)
+	except Exception, e:
+		try:
+			fencedev.removeAttribute('snmp_priv_prot')
+		except:
+			pass
+
+	return errors
+
 def val_noop_fd(dummy, _dummy):
 	return []
 
@@ -1103,6 +1364,106 @@
 
 	return errors
 
+def val_ilo_mp_fd(form, fencedev):
+	errors = list()
+
+	try:
+		hostname = form['ipaddr'].strip()
+		if not hostname:
+			raise Exception, 'blank'
+		fencedev.addAttribute('ipaddr', hostname)
+	except Exception, e:
+		errors.append(FD_PROVIDE_HOSTNAME)
+
+	try:
+		log = form['login'].strip()
+		if not log:
+			raise Exception, 'blank'
+		fencedev.addAttribute('login', log)
+	except Exception, e:
+		errors.append(FD_PROVIDE_LOGIN)
+
+	try:
+		power_wait = form['power_wait'].strip()
+		if power_wait:
+			power_wait = int(power_wait)
+			if power_wait < 0:
+				raise ValueError
+	except (KeyError, AttributeError), e:
+		power_wait = None
+	except Exception, e:
+		power_wait = None
+		errors.append('An invalid value for power_wait was given: "%s"' % form['power_wait'])
+	if power_wait:
+		fencedev.addAttribute('power_wait', str(power_wait))
+	else:
+		fencedev.removeAttribute('power_wait')
+
+	has_passwd = False
+	try:
+		pwd = form['passwd'].strip()
+		if not pwd:
+			# Allow passwords that consist of only spaces.
+			if not form.has_key('passwd') or form['passwd'] == '':
+				raise Exception, 'blank'
+			else:
+				pwd = form['passwd']
+		fencedev.addAttribute('passwd', pwd)
+		has_passwd = True
+	except Exception, e:
+		try:
+			fencedev.removeAttribute('passwd')
+		except:
+			pass
+
+	try:
+		pwd_script = form['passwd_script'].strip()
+		if not pwd_script:
+			raise Exception, 'blank'
+		fencedev.addAttribute('passwd_script', pwd_script)
+		has_passwd = True
+	except Exception, e:
+		try:
+			fencedev.removeAttribute('passwd_script')
+		except:
+			pass
+
+	if not has_passwd:
+		errors.append(FD_PROVIDE_PASSWD)
+
+	use_ssh = form.has_key('secure') and (form['secure'] == '1' or form['secure'].lower() == 'true')
+	if use_ssh:
+		fencedev.addAttribute('secure', '1')
+	else:
+		fencedev.removeAttribute('secure')
+
+	try:
+		ipport = form['ipport'].strip()
+		if ipport:
+			ipport = int(ipport)
+			if ipport < 1 or ipport & 0xffff != ipport:
+				raise ValueError
+	except (KeyError, AttributeError), e:
+		ipport = None
+	except Exception, e:
+		ipport = None
+		errors.append('An invalid value for ipport was given: "%s"' % form['ipport'])
+	if ipport:
+		fencedev.addAttribute('ipport', str(ipport))
+	else:
+		fencedev.removeAttribute('ipport')
+
+	try:
+		cmd_prompt = form['cmd_prompt'].strip()
+	except Exception, e:
+		cmd_prompt = None
+	if cmd_prompt:
+		fencedev.addAttribute('cmd_prompt', cmd_prompt)
+	else:
+		fencedev.removeAttribute('cmd_prompt')
+
+	return errors
+
 FD_VALIDATE = {
 	'fence_apc':			val_apc_fd,
 	'fence_wti':			val_wti_fd,
@@ -1115,10 +1476,14 @@
 	'fence_egenera':		val_egenera_fd,
 	'fence_bullpap':		val_bullpap_fd,
 	'fence_lpar':			val_lpar_fd,
+	'fence_ucs':			val_ucs_fd,
+	'fence_cisco_mds':		val_cisco_mds_fd,
+	'fence_ifmib':			val_cisco_mds_fd,
 	'fence_vmware':			val_vmware_fd,
 	'fence_xvm':			val_noop_fd,
 	'fence_scsi':			val_noop_fd,
 	'fence_ilo':			val_ilo_fd,
+	'fence_ilo_mp':			val_ilo_mp_fd,
 	'fence_ipmilan':		val_ipmilan_fd,
 	'fence_drac':			val_drac_fd,
 	'fence_drac5':			val_drac_fd,
@@ -1417,6 +1782,32 @@
 
 	return errors
 
+def val_cisco_mds_fi(form, fenceinst):
+	errors = list()
+
+	try:
+		port = form['port'].strip()
+		if not port:
+			raise Exception, 'blank'
+		fenceinst.addAttribute('port', port)
+	except Exception, e:
+		errors.append(FI_PROVIDE_PORT)
+
+	return errors
+
+def val_ucs_fi(form, fenceinst):
+	errors = list()
+
+	try:
+		port = form['port'].strip()
+		if not port:
+			raise Exception, 'blank'
+		fenceinst.addAttribute('port', port)
+	except Exception, e:
+		errors.append(FI_PROVIDE_PORT)
+
+	return errors
+
 def val_manual_fi(form, fenceinst):
 	nodename = form.get('nodename')
 	if nodename:
@@ -1441,8 +1832,12 @@
 	'fence_xvm':			val_xvm_fi,
 	'fence_scsi':			val_scsi_fi,
 	'fence_lpar':			val_lpar_fi,
+	'fence_ucs':			val_ucs_fi,
+	'fence_cisco_mds':		val_cisco_mds_fi,
+	'fence_ifmib':			val_cisco_mds_fi,
 	'fence_vmware':			val_vmware_fi,
 	'fence_ilo':			val_noop_fi,
+	'fence_ilo_mp':			val_noop_fi,
 	'fence_ipmilan':		val_noop_fi,
 	'fence_drac':			val_noop_fi,
 	'fence_drac5':			val_noop_fi,
--- conga/luci/site/luci/Extensions/LuciClusterInfo.py	2009/05/21 13:32:04	1.1.4.19
+++ conga/luci/site/luci/Extensions/LuciClusterInfo.py	2010/09/29 17:08:25	1.1.4.20
@@ -682,6 +682,10 @@
 		clumap['pfd'] = pfd
 		clumap['skip_undefined'] = fdp.getSkipUndefined()
 
+		if model.get_cluster_broadcast() is True:
+			clumap['is_bcast'] = 'True'
+		else:
+			clumap['is_bcast'] = 'False'
 		#-------------
 		#if multicast
 		multicast_url = '%stab=%s' % (prop_baseurl, PROP_MCAST_TAB)
--- conga/luci/site/luci/Extensions/LuciValidation.py	2010/08/06 23:54:12	1.6.2.16
+++ conga/luci/site/luci/Extensions/LuciValidation.py	2010/09/29 17:08:25	1.6.2.17
@@ -390,6 +390,29 @@
 			resObj.addAttribute('__independent_subtree', '1')
 		else:
 			resObj.removeAttribute('__independent_subtree')
+
+		if dummy_form.has_key('__independent_subtree_noncritical'):
+			resObj.addAttribute('__independent_subtree', '2')
+
+			if dummy_form.has_key('__max_restarts'):
+				try:
+					resObj.addAttribute('__max_restarts', str(int(dummy_form['__max_restarts'])))
+				except:
+					resObj.removeAttribute('__max_restarts')
+			else:
+				resObj.removeAttribute('__max_restarts')
+
+			if dummy_form.has_key('__restart_expire_time'):
+				try:
+					resObj.addAttribute('__restart_expire_time', str(int(dummy_form['__restart_expire_time'])))
+				except:
+					resObj.removeAttribute('__restart_expire_time')
+			else:
+				resObj.removeAttribute('__restart_expire_time')
+		else:
+			resObj.removeAttribute('__restart_expire_time')
+			resObj.removeAttribute('__max_restarts')
+
 		form_hash[form_id]['obj'] = resObj
 
 	if len(errors) > 0:
@@ -663,16 +686,21 @@
 	errors = list()
 	try:
 		mcast_val = form['mcast'].strip().lower()
-		if mcast_val != 'true' and mcast_val != 'false':
+		if mcast_val not in ('true', 'false', 'broadcast'):
 			raise KeyError, mcast_val
 		if mcast_val == 'true':
 			mcast_manual = True
-		else:
+		elif mcast_val == 'false':
 			mcast_manual = False
+		elif mcast_val == 'broadcast':
+			model.del_cluster_multicast()
+			model.set_cluster_broadcast()
+			return (True, {})
 	except KeyError, e:
 		errors.append('An invalid multicast selection was made')
 		return (False, {'errors': errors})
 
+	model.del_cluster_broadcast()
 	mcast_interface = None
 	if form.has_key('mcast_interface'):
 		mcast_interface = form['mcast_interface'].strip()
--- conga/luci/site/luci/Extensions/conga_storage_constants.py	2008/01/23 04:44:32	1.8.2.2
+++ conga/luci/site/luci/Extensions/conga_storage_constants.py	2010/09/29 17:08:25	1.8.2.3
@@ -80,7 +80,7 @@
 	'fstab':					'List in /etc/fstab',
 	'fstabpoint':				'/etc/fstab Mountpoint',
 	'gfs_fsname':				'Unique GFS Name',
-	'has_journal':				'Journaling Enabled - ext3',
+	'has_journal':				'Journaling Enabled - ext3, ext4',
 	'journals_num':				'Number of Journals',
 	'journal_size':				'Journal Size',
 	'label':					'Label',
--- conga/luci/site/luci/Extensions/ClusterModel/FenceDeviceAttr.py	2010/08/05 17:33:05	1.5.2.4
+++ conga/luci/site/luci/Extensions/ClusterModel/FenceDeviceAttr.py	2010/09/29 17:08:25	1.5.2.5
@@ -25,12 +25,16 @@
 	'fence_xvm':			'Virtual Machine Fencing',
 	'fence_scsi':			'SCSI Reservation',
 	'fence_ilo':			'HP iLO Device',
+	'fence_ilo_mp':			'HP iLO MP',
 	'fence_ipmilan':		'IPMI Lan',
 	'fence_drac':			'Dell DRAC',
 	'fence_rsa':			'IBM RSA II Device',
 	'fence_rps10':			'RPS10 Serial Switch',
 	'fence_lpar':			'LPAR Fencing',
 	'fence_vmware':			'VMware Fencing',
+	'fence_cisco_mds':		'Cisco MDS',
+	'fence_ucs':			'Cisco UCS',
+	'fence_ifmib':			'IF MIB',
 	'fence_manual':			'Manual Fencing'
 }
 
@@ -49,7 +53,11 @@
 	'fence_scsi':			True,
 	'fence_lpar':			True,
 	'fence_vmware':			True,
+	'fence_cisco_mds':		True,
+	'fence_ucs':			True,
+	'fence_ifmib':			True,
 	'fence_ilo':			False,
+	'fence_ilo_mp':			False,
 	'fence_ipmilan':		False,
 	'fence_drac':			False,
 	'fence_rsa':			False,
@@ -92,6 +100,9 @@
 	'fence_scsi':			( 'node' ),
 	'fence_lpar':			( 'partition' ),
 	'fence_vmware':			( 'port' ),
+	'fence_cisco_mds':		( 'port' ),
+	'fence_ucs':			( 'port' ),
+	'fence_ifmib':			( 'port' ),
 	'fence_ilo':			( ),
 	'fence_ipmilan':		( ),
 	'fence_drac':			( ),
@@ -127,10 +138,18 @@
 		( 'name', 'ipaddr', 'login', 'passwd' ),
 	'fence_vmware':
 		( 'name', 'ipaddr', 'login', 'passwd', 'vmlogin', 'vmpasswd' ),
+	'fence_cisco_mds':
+		( 'name', 'ipaddr', 'login', 'passwd' ),
+	'fence_ucs':
+		( 'name', 'ipaddr', 'login', 'passwd' ),
+	'fence_ifmib':
+		( 'name', 'ipaddr', 'login', 'passwd' ),
 	'fence_scsi':
 		( 'name' ),
 	'fence_ilo':
 		( 'name', 'hostname', 'login', 'passwd' ),
+	'fence_ilo_mp':
+		( 'name', 'ipaddr', 'login', 'passwd', 'ipport', 'secure', 'cmd_prompt' ),
 	'fence_ipmilan':
 		( 'name', 'ipaddr', 'login', 'passwd', 'lanplus', 'auth' ),
 	'fence_drac':
--- conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py	2010/08/06 23:54:12	1.1.4.15
+++ conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py	2010/09/29 17:08:25	1.1.4.16
@@ -1020,6 +1020,25 @@
           node.removeChild(node_child)
           break
 
+  def set_cluster_broadcast(self):
+    if self.del_cluster_multicast() is False:
+      return False
+    broadcast = self.CMAN_ptr.addAttribute('broadcast', 'yes')
+
+  def del_cluster_broadcast(self):
+    if self.CMAN_ptr is None:
+      return False
+    self.CMAN_ptr.removeAttribute('broadcast')
+    self.isModified = True
+
+  def get_cluster_broadcast(self):
+    if self.CMAN_ptr is None:
+      return False
+    broadcast = self.CMAN_ptr.getAttribute('broadcast')
+    if broadcast and broadcast.lower() in ('1', 'true', 'yes'):
+        return True
+    return False
+
   def del_cluster_multicast(self):
     if self.CMAN_ptr is None:
       return False
--- conga/ricci/Makefile	2008/01/17 17:38:36	1.11.2.2
+++ conga/ricci/Makefile	2010/09/29 17:08:26	1.11.2.3
@@ -33,6 +33,7 @@
 	${MAKE} -C modules install
 	${MAKE} -C init.d install
 	${MAKE} -C pam.d install
+	${MAKE} -C docs install
 	${INSTALL_DIR} ${docdir}/ricci-${VERSION}/
 	${INSTALL_FILE} COPYING ${docdir}/ricci-${VERSION}/
 
/cvs/cluster/conga/ricci/docs/Makefile,v  -->  standard output
revision 1.2.2.1
--- conga/ricci/docs/Makefile
+++ -	2010-09-29 17:08:31.840720000 +0000
@@ -0,0 +1,8 @@
+include ../make/defines.mk
+
+all:
+	@true
+
+install:
+	install -d ${mandir}/man8
+	install ricci.8 ${mandir}/man8


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]