From mboxrd@z Thu Jan 1 00:00:00 1970 From: rmccabe@sourceware.org Date: 25 Jan 2007 21:03:48 -0000 Subject: [Cluster-devel] conga/luci cluster/fence_device.js cluster/for ... Message-ID: <20070125210348.29434.qmail@sourceware.org> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit CVSROOT: /cvs/cluster Module name: conga Changes by: rmccabe at sourceware.org 2007-01-25 21:03:47 Modified files: luci/cluster : fence_device.js form-macros validate_fence.js luci/homebase : homebase_common.js Log message: more frontend fence validation Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/fence_device.js.diff?cvsroot=cluster&r1=1.10&r2=1.11 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-macros.diff?cvsroot=cluster&r1=1.160&r2=1.161 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/validate_fence.js.diff?cvsroot=cluster&r1=1.2&r2=1.3 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/homebase/homebase_common.js.diff?cvsroot=cluster&r1=1.15&r2=1.16 --- conga/luci/cluster/fence_device.js 2007/01/17 03:52:16 1.10 +++ conga/luci/cluster/fence_device.js 2007/01/25 21:03:46 1.11 @@ -190,48 +190,3 @@ container.appendChild(div_elem); num_fences_level[fence_level - 1]++; } - -function validate_fence(master_form, container_id) { - var errors = new Array(); - var div_elem = document.getElementById(container_id); - if (!div_elem) - return (-1); - var form_xml = ''; - - var form = div_elem.getElementsByTagName('form'); - for (var i = 0 ; i < form.length ; i++) { - var input_elem = form[i].getElementsByTagName('input'); - var temp = ''; - for (var j = 0 ; j < input_elem.length ; j++) { - var res_type = input_elem[j].type; - if (res_type == 'hidden' || res_type == 'text' || - res_type == 'password') - { - temp += ''; - } else if (res_type == 'checkbox' || res_type == 'radio') { - if (input_elem[j].checked) { - temp += ''; - } - } - } - - var select_elem = form[i].getElementsByTagName('select'); - for (var j = 0 ; j < select_elem.length ; j++) { - temp += ''; - } - - form_xml += '
' + temp + '
'; - } - - master_form.fence_xml.value = '' + form_xml + ''; - - if (confirm('Update this node\'s fence configuration?')) - master_form.submit(); -} --- conga/luci/cluster/form-macros 2007/01/25 19:55:08 1.160 +++ conga/luci/cluster/form-macros 2007/01/25 21:03:47 1.161 @@ -2270,6 +2270,7 @@ + @@ -2312,6 +2313,7 @@ + @@ -2347,6 +2349,7 @@ + @@ -2382,6 +2385,7 @@ + @@ -2417,6 +2421,7 @@ + @@ -2452,6 +2457,7 @@ + @@ -2487,6 +2493,7 @@ + @@ -2522,6 +2529,7 @@ + @@ -2557,6 +2565,7 @@ + @@ -2592,6 +2601,7 @@ + @@ -2614,6 +2624,7 @@ + @@ -2649,6 +2660,7 @@ + @@ -2755,6 +2767,9 @@ + @@ -2866,7 +2881,8 @@
- +
@@ -3137,7 +3153,7 @@ + onclick="validate_node_fence_form(this.form, 'fence_list_level1')" /> @@ -3153,7 +3169,7 @@ + onclick="validate_node_fence_form(this.form, 'fence_list_level2')" /> @@ -4371,7 +4387,8 @@
- +
--- conga/luci/cluster/validate_fence.js 2007/01/25 19:55:09 1.2 +++ conga/luci/cluster/validate_fence.js 2007/01/25 21:03:47 1.3 @@ -67,7 +67,7 @@ if (!form_elem || str_is_blank(form_elem.value)) return (null); - var auth_type = form_elem.value.strip(); + var auth_type = form_elem.value; if (auth_type != 'none' && auth_type != 'password' && auth_type != 'md5') { errors.push('Auth type must be either \'none\' (or blank), \'md5\' or \'password\''); set_form_err(form_elem); @@ -78,7 +78,7 @@ return (null); } -var field_validator = new Object(); +var field_validator = new Array(); field_validator['ipaddr'] = validate_field_host; field_validator['hostname'] = validate_field_host; field_validator['login'] = validate_field_str; @@ -150,4 +150,82 @@ function validate_fence_instance(form) { var errors = new Array(); + + if (!form.fence_type || str_is_blank(form.fence_type.value)) + errors.push('The fence device associated with this instance could not be determined.'); + + if (errors.length > 0) + return (errors); + + var fence_type = form.fence_type.value.replace(/^fence_/, ''); + var fields = fence_inst_validator[fence_type]; + if (!fields) + errors.push('An unknown fence device type was given: \"' + fence_type + '.\"'); + + if (errors.length > 0) + return (errors); + + for (var i = 0 ; i < fields.length ; i++) { + var field_name = fields[i]; + var err = field_validator[field_name](form[field_name]); + if (err) + errors = errors.concat(err); + } + + return (errors); +} + +function validate_node_fence_form(master_form, container_id) { + var errors = new Array(); + var div_elem = document.getElementById(container_id); + if (!div_elem) + return (-1); + var form_xml = ''; + + var form = div_elem.getElementsByTagName('form'); + for (var i = 0 ; i < form.length ; i++) { + var err = null; + if (form[i].fence_instance) + err = validate_fence_instance(form[i]); + else if (form[i].fence_type) + err = validate_fence(form[i]); + if (err) + errors = errors.concat(err); + var input_elem = form[i].getElementsByTagName('input'); + var temp = ''; + for (var j = 0 ; j < input_elem.length ; j++) { + var res_type = input_elem[j].type; + if (res_type == 'hidden' || res_type == 'text' || + res_type == 'password') + { + temp += ''; + } else if (res_type == 'checkbox' || res_type == 'radio') { + if (input_elem[j].checked) { + temp += ''; + } + } + } + + var select_elem = form[i].getElementsByTagName('select'); + for (var j = 0 ; j < select_elem.length ; j++) { + temp += ''; + } + + form_xml += '
' + temp + '
'; + } + + master_form.fence_xml.value = '' + form_xml + ''; + + if (error_dialog(errors)) + return (-1); + + if (confirm('Update this node\'s fence configuration?')) + master_form.submit(); } --- conga/luci/homebase/homebase_common.js 2006/12/21 05:08:48 1.15 +++ conga/luci/homebase/homebase_common.js 2007/01/25 21:03:47 1.16 @@ -5,7 +5,7 @@ function clr_form_err(ielem) { if (ielem) - ielem.className = ielem.className.replace(/ formerror/, ''); + ielem.className = ielem.className.replace(/( )?formerror/, ''); } function toggle_visible(img_obj, elem_id, label_id) {