From: rmccabe@sourceware.org <rmccabe@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] conga ./conga.spec.in.in luci/cluster/cluster_ ...
Date: 29 Sep 2010 17:08:32 -0000 [thread overview]
Message-ID: <20100929170832.23815.qmail@sourceware.org> (raw)
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL5
Changes by: rmccabe at 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
next reply other threads:[~2010-09-29 17:08 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-29 17:08 rmccabe [this message]
-- strict thread matches above, loose matches on Subject: below --
2009-05-21 13:33 [Cluster-devel] conga ./conga.spec.in.in luci/cluster/cluster_ rmccabe
2009-05-14 21:05 rmccabe
2009-04-27 21:03 rmccabe
2009-04-15 16:07 rmccabe
2009-03-24 20:06 rmccabe
2009-02-16 17:23 rmccabe
2008-09-18 15:20 rmccabe
2008-08-07 18:08 rmccabe
2008-07-14 21:52 rmccabe
2008-03-12 15:13 rmccabe
2008-02-27 20:22 rmccabe
2008-02-08 21:57 rmccabe
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=20100929170832.23815.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).