[Cluster-devel] conga/luci cluster/form-macros cluster/validat ...
rmccabe at sourceware.org
rmccabe at sourceware.org
Fri Aug 24 21:55:45 UTC 2007
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL4
Changes by: rmccabe at sourceware.org 2007-08-24 21:55:44
Modified files:
luci/cluster : form-macros validate_config_multicast.js
luci/site/luci/Extensions: LuciClusterInfo.py
cluster_adapters.py
luci/site/luci/Extensions/ClusterModel: ModelBuilder.py
Log message:
When using multicast on a rhel4 cluster, a network interface must be specified.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-macros.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.176.2.20&r2=1.176.2.21
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/validate_config_multicast.js.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.3.4.2&r2=1.3.4.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterInfo.py.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.10.2.2&r2=1.10.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.227.2.23&r2=1.227.2.24
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.5.2.2&r2=1.5.2.3
--- conga/luci/cluster/form-macros 2007/08/24 18:40:28 1.176.2.20
+++ conga/luci/cluster/form-macros 2007/08/24 21:55:42 1.176.2.21
@@ -1082,7 +1082,7 @@
<tr class="systemsTable">
<td class="systemsTable">
<input type="radio" name="mcast" value="False"
- onClick="disable_mcast('mcast_address');"
+ onClick="disable_mcast('mcast_address', 'mcast_interface');"
tal:attributes="checked python: clusterinfo['is_mcast'] != 'True'"
/>
<tal:block tal:condition="python:os_version == 'rhel4'">
@@ -1097,7 +1097,7 @@
<tr class="systemsTable">
<td class="systemsTable">
<input type="radio" name="mcast" value="True"
- onClick="enable_mcast('mcast_address');"
+ onClick="enable_mcast('mcast_address', 'mcast_interface');"
tal:attributes="checked python: clusterinfo['is_mcast'] == 'True'"
/>
@@ -1122,6 +1122,18 @@
value clusterinfo/mcast_addr |nothing" />
</td>
</tr>
+ <tr class="systemsTable">
+ <td class="systemsTable">
+ Multicast network interface <span tal:condition="python:os_version != 'rhel4'">(optional)</span>
+ </td>
+ <td class="systemsTable">
+ <input type="text"
+ name="mcast_interface" id="mcast_interface"
+ tal:attributes="
+ disabled not:clusterinfo/mcast_addr;
+ value clusterinfo/mcast_interface |nothing" />
+ </td>
+ </tr>
</tbody>
<tfoot class="systemsTable">
@@ -1194,18 +1206,18 @@
</tr>
<tr class="systemsTable">
- <td class="systemsTable">TKO</td>
+ <td class="systemsTable">Votes</td>
<td class="systemsTable">
- <input type="text" name="tko"
- tal:attributes="value clusterinfo/tko | nothing" />
+ <input type="text" name="votes"
+ tal:attributes="value clusterinfo/votes | nothing" />
</td>
</tr>
<tr class="systemsTable">
- <td class="systemsTable">Votes</td>
+ <td class="systemsTable">TKO</td>
<td class="systemsTable">
- <input type="text" name="votes"
- tal:attributes="value clusterinfo/votes | nothing" />
+ <input type="text" name="tko"
+ tal:attributes="value clusterinfo/tko | nothing" />
</td>
</tr>
--- conga/luci/cluster/validate_config_multicast.js 2007/08/24 18:40:28 1.3.4.2
+++ conga/luci/cluster/validate_config_multicast.js 2007/08/24 21:55:42 1.3.4.3
@@ -8,24 +8,36 @@
*/
var prev_mcast_str = '';
+var prev_mcast_if = '';
-function disable_mcast(addrId) {
- addrObj = document.getElementById(addrId);
- if (!addrObj) {
- return;
- }
- addrObj.disabled = true;
- prev_mcast_str = addrObj.value;
- addrObj.value = '';
+function disable_mcast(addrId, ifId) {
+ var addrObj = document.getElementById(addrId);
+ if (addrObj) {
+ prev_mcast_str = addrObj.value;
+ addrObj.disabled = true;
+ addrObj.value = '';
+ }
+
+ var ifObj = document.getElementById(ifId);
+ if (ifObj) {
+ prev_mcast_if = ifObj.value;
+ ifObj.disabled = true;
+ ifObj.value = '';
+ }
}
-function enable_mcast(addrId) {
- addrObj = document.getElementById(addrId);
- if (!addrObj) {
- return;
+function enable_mcast(addrId, ifId) {
+ var addrObj = document.getElementById(addrId);
+ if (addrObj) {
+ addrObj.disabled = false;
+ addrObj.value = prev_mcast_str;
+ }
+
+ var ifObj = document.getElementById(ifId);
+ if (ifObj) {
+ ifObj.disabled = false;
+ ifObj.value = prev_mcast_if;
}
- addrObj.disabled = false;
- addrObj.value = prev_mcast_str;
}
function validate_form(form) {
@@ -54,6 +66,7 @@
clr_form_err(form.mcast[0]);
clr_form_err(form.mcast[1]);
clr_form_err(form.mcast_address);
+ clr_form_err(form.mcast_interface);
}
if (mcast == 1) {
@@ -68,6 +81,15 @@
}
clr_form_err(form.mcast_address);
}
+
+ if (form.cluster_version && form.cluster_version.value == 'rhel4') {
+ if (!form.mcast_interface || str_is_blank(form.mcast_interface.value)) {
+ set_form_err(form.mcast_interface);
+ errors.push('No multicast interface was given.');
+ } else {
+ clr_form_err(form.mcast_interface);
+ }
+ }
}
if (error_dialog(errors))
--- conga/luci/site/luci/Extensions/LuciClusterInfo.py 2007/08/24 18:40:29 1.10.2.2
+++ conga/luci/site/luci/Extensions/LuciClusterInfo.py 2007/08/24 21:55:42 1.10.2.3
@@ -618,9 +618,11 @@
is_mcast = model.isMulticast()
if is_mcast:
clumap['mcast_addr'] = model.getMcastAddr()
+ clumap['mcast_interface'] = model.getMcastInterface()
clumap['is_mcast'] = 'True'
else:
clumap['mcast_addr'] = None
+ clumap['mcast_interface'] = None
clumap['is_mcast'] = 'False'
clumap['gulm'] = False
else:
--- conga/luci/site/luci/Extensions/cluster_adapters.py 2007/08/24 18:40:29 1.227.2.23
+++ conga/luci/site/luci/Extensions/cluster_adapters.py 2007/08/24 21:55:42 1.227.2.24
@@ -983,6 +983,14 @@
errors.append('An invalid multicast selection was made')
return (False, {'errors': errors})
+ mcast_interface = None
+ if form.has_key('mcast_interface'):
+ mcast_interface = form['mcast_interface'].strip()
+
+ if mcast_manual is True and form.has_key('cluster_version') and form['cluster_version'].strip() == 'rhel4' and not mcast_interface:
+ errors.append('No multicast interface was specified')
+ return (False, {'errors': errors})
+
if mcast_manual is True:
import socket
try:
@@ -1001,20 +1009,13 @@
addr_str = None
try:
- old_mcast_addr = model.getMcastAddr()
- except Exception, e:
- luci_log.debug_verbose('VMCC0: %r %s' % (e, str(e)))
- old_mcast_addr = None
-
- if (addr_str is None and mcast_manual is not True and not old_mcast_addr) or (mcast_manual is True and addr_str == old_mcast_addr):
- errors.append('No multicast configuration changes were made')
- return (False, {'errors': errors})
-
- try:
- if model.getMcastAddr() is not None and not addr_str:
+ if not addr_str:
+ if mcast_interface:
+ errors.append('A multicast interface was specified, but no multicast address was given')
+ return (False, {'errors': errors})
model.del_cluster_multicast()
else:
- model.set_cluster_multicast(addr_str)
+ model.set_cluster_multicast(addr_str, mcast_if=mcast_interface)
except Exception, e:
if LUCI_DEBUG_MODE is True:
luci_log.debug('Error updating mcast properties: %r %s' \
--- conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py 2007/08/24 18:40:29 1.5.2.2
+++ conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py 2007/08/24 21:55:43 1.5.2.3
@@ -682,17 +682,23 @@
children = self.CMAN_ptr.getChildren()
for child in children:
if child.getTagName() == MCAST_STR:
+ self.mcast_ptr = child
addr = child.getAttribute("addr")
if addr is not None:
self.mcast_address = addr
- return
else: #What a mess! a multicast tag, but no addr attribute
self.mcast_address = ""
- return
+ mcastif = child.getAttribute("interface")
+ if mcastif is not None:
+ self.mcast_interface = mcastif
+ return
def getMcastAddr(self):
return self.mcast_address
+ def getMcastInterface(self):
+ return self.mcast_interface
+
def isQuorumd(self):
return self.usesQuorumd
@@ -877,6 +883,8 @@
self.usesMulticast = None
self.mcast_address = None
+ self.mcast_interface = None
+ self.mcast_ptr = None
#reset self.lock_type
self.lock_type = GULM_TYPE
@@ -985,7 +993,7 @@
for child in iter(self.CMAN_ptr.getChildren()):
if child.getTagName() == MCAST_STR:
self.CMAN_ptr.removeChild(child)
- break
+
self.mcast_ptr = None
self.usesMulticast = False
self.mcast_address = None
More information about the Cluster-devel
mailing list