[Cluster-devel] conga/luci cluster/validate_xvm_key.js plone-c ...
rmccabe at sourceware.org
rmccabe at sourceware.org
Wed Aug 8 21:20:38 UTC 2007
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL5
Changes by: rmccabe at sourceware.org 2007-08-08 21:20:37
Modified files:
luci/cluster : validate_xvm_key.js
luci/plone-custom: conga_ajax.js
Log message:
Fix 230451, pass 5
- luci frontend support for managing fence_xvm keys, pass 2
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/validate_xvm_key.js.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.2.1&r2=1.1.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/conga_ajax.js.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2.2.1&r2=1.2.2.2
--- conga/luci/cluster/validate_xvm_key.js 2007/08/08 21:18:46 1.1.2.1
+++ conga/luci/cluster/validate_xvm_key.js 2007/08/08 21:20:37 1.1.2.2
@@ -0,0 +1,119 @@
+/*
+** Copyright (C) 2007 Red Hat, Inc.
+**
+** This program is free software; you can redistribute
+** it and/or modify it under the terms of version 2 of the
+** GNU General Public License as published by the
+** Free Software Foundation.
+*/
+
+function get_cluster_members(host_list) {
+ var url = '/luci/cluster?pagetype=1000';
+ var node_num = 0;
+
+ var hclu_elem = document.getElementById('host_cluster_name');
+ if (hclu_elem) {
+ ++node_num;
+ url += '&node' + node_num + '=' + hclu_elem.value;
+ }
+ var vclu_elem = document.getElementById('virt_cluster_name');
+ if (vclu_elem) {
+ ++node_num;
+ url += '&node' + node_num + '=' + vclu_elem.value;
+ }
+ initiate_async_get(url, cluster_member_callback);
+}
+
+function cluster_member_callback() {
+ return check_ajax_xml(xmlHttp_object, cluster_member_check);
+}
+
+function validate_xvm_dist_form(form) {
+ return form.submit();
+}
+
+function cluster_member_check(ret_status, obj) {
+ if (ret_status === null) {
+ /* Not ready */
+ return;
+ }
+
+ if (ret_status !== true) {
+ /* A communication error occurred. */
+ alert(obj);
+ return;
+ }
+
+ var err = get_ricci_response_status(obj.responseXML);
+ if (err !== null && err.length > 0) {
+ alert(err.join('\n'));
+ return;
+ }
+
+ obj = obj.responseXML;
+ var clusters = [];
+ var dict_tags = obj.firstChild.getElementsByTagName('dict');
+ for (var i = 0 ; i < dict_tags.length ; i++) {
+ try {
+ var cnode_names = [];
+ var tag_name = dict_tags[i].getAttribute('name');
+ var cnodes = dict_tags[i].getElementsByTagName('clusternode');
+
+ for (var j = 0 ; j < cnodes.length ; j++) {
+ cnode_names.push(cnodes[j].getAttribute('value'));
+ }
+ clusters.push([ tag_name, cnode_names ]);
+ } catch (e) {
+ continue;
+ }
+ }
+
+ var form_elem = document.getElementById('fence_config_form');
+ var xvm_submit_elem = document.getElementById('fence_config_submit');
+ var xvm_div_elem = document.getElementById('fence_xvm_hosts');
+ var xvm_hidden_elem = document.getElementById('fence_xvm_config');
+
+ if (!form_elem || !xvm_submit_elem || !xvm_div_elem || !xvm_hidden_elem) {
+ alert('Server error: required form elements are missing.');
+ return;
+ }
+
+ for (var i = 0 ; i < clusters.length ; i++) {
+ var cnode_list = clusters[i][1];
+
+ var div = document.createElement('div');
+ var p = document.createElement('p');
+ var span = document.createElement('strong');
+ var ul = document.createElement('ul');
+
+ p.className = 'cluster';
+ span.className = 'cluster';
+ span.textContent = 'Cluster: ' + clusters[i][0];
+
+ p.appendChild(span);
+ div.appendChild(p);
+
+ for (var j = 0 ; j < cnode_list.length ; j++) {
+ var li = document.createElement('li');
+ var input = document.createElement('input');
+ var lispan = document.createElement('span');
+ input.type = 'checkbox';
+ input.name = '__NODE_HOSTNAME__';
+ input.value = cnode_list[j];
+ input.checked = 'checked';
+ lispan.textContent = cnode_list[j];
+ li.appendChild(input);
+ li.appendChild(lispan);
+ ul.appendChild(li);
+ }
+ div.appendChild(ul);
+ xvm_div_elem.appendChild(div);
+ }
+
+ var fc_elem = document.getElementById('fence_xvm_init');
+ if (fc_elem) {
+ form_elem.pagetype.value = '60';
+ fc_elem.className = 'invisible';
+ xvm_hidden_elem.className = 'systemsTable';
+ }
+}
--- conga/luci/plone-custom/conga_ajax.js 2007/08/08 21:18:46 1.2.2.1
+++ conga/luci/plone-custom/conga_ajax.js 2007/08/08 21:20:37 1.2.2.2
@@ -0,0 +1,96 @@
+/*
+** Copyright (C) 2007 Red Hat, Inc.
+**
+** This program is free software; you can redistribute
+** it and/or modify it under the terms of version 2 of the
+** GNU General Public License as published by the
+** Free Software Foundation.
+*/
+
+var xmlHttp_object = false;
+
+function initiate_async_get(url, callback_function) {
+ xmlHttp_object = false;
+
+ if (!xmlHttp_object && typeof XMLHttpRequest != 'undefined') {
+ try {
+ xmlHttp_object = new XMLHttpRequest();
+ } catch (e0) {
+ try {
+ xmlHttp_object = new ActiveXObject("Msxml2.XMLHTTP");
+ } catch (e) {
+ try {
+ xmlHttp_object = new ActiveXObject("Microsoft.XMLHTTP");
+ } catch (e2) {
+ xmlHttp_object = false;
+ }
+ }
+ }
+ }
+
+ if (xmlHttp_object) {
+ xmlHttp_object.open("GET", url, true);
+ xmlHttp_object.onreadystatechange = callback_function;
+ xmlHttp_object.send(null);
+ } else {
+ alert("Unable to communicate with the luci server.");
+ }
+}
+
+function get_ajax_msgs(obj, tag_name) {
+ try {
+ var msgs = []
+ var msg_list = obj.getElementsByTagName(tag_name);
+ for (var i = 0 ; i < msg_list.length ; i++) {
+ var msg_txt = msg_list[i].getAttribute('value');
+ msgs.push(msg_txt);
+ }
+ return msgs;
+ } catch (e) {
+ return null;
+ }
+ return null;
+}
+
+function check_ajax_xml(xmlobj, handler_func) {
+ if (xmlobj.readyState != 4) {
+ return null;
+ }
+
+ if (xmlobj.status == 200) {
+ if (xmlobj.responseXML) {
+ return handler_func(true, xmlobj);
+ } else {
+ return handler_func(false, 'Error retrieving data from server');
+ }
+ } else {
+ return handler_func(false, 'Error retrieving data from server: ' + xmlobj.status);
+ }
+}
+
+function get_ricci_response_status(obj) {
+ if (!obj) {
+ return [ 'No response from server' ]
+ }
+
+ var rlist = obj.getElementsByTagName('result');
+ for (var i = 0 ; i < rlist.length ; i++) {
+ var elem_name = null;
+
+ try {
+ elem_name = rlist[i].getAttribute('name');
+ if (elem_name != 'success') {
+ continue;
+ } else {
+ var result = rlist[i].getAttribute('value');
+ if (result == 'true') {
+ return null;
+ }
+ break;
+ }
+ } catch (e) {
+ continue;
+ }
+ }
+ return get_ajax_msgs(obj, 'errors');
+}
More information about the Cluster-devel
mailing list