From: rmccabe@sourceware.org <rmccabe@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] conga luci/cluster/form-macros luci/cluster/in ...
Date: 27 Jul 2007 16:49:10 -0000 [thread overview]
Message-ID: <20070727164910.28065.qmail@sourceware.org> (raw)
CVSROOT: /cvs/cluster
Module name: conga
Changes by: rmccabe at sourceware.org 2007-07-27 16:43:47
Modified files:
luci/cluster : form-macros index_html validate_fence.js
luci/homebase : validate_cluster_add.js
luci/site/luci/Extensions: FenceHandler.py LuciClusterActions.py
LuciClusterInfo.py LuciDB.py
LuciZope.py PropsObject.py
RicciQueries.py StorageReport.py
cluster_adapters.py
conga_constants.py
ricci/common : XML.cpp
ricci/test_suite/cluster: generate_xvm_key.xml
Log message:
Fixes from the RHEL5 branch
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-macros.diff?cvsroot=cluster&r1=1.204&r2=1.205
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/index_html.diff?cvsroot=cluster&r1=1.36&r2=1.37
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/validate_fence.js.diff?cvsroot=cluster&r1=1.10&r2=1.11
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/homebase/validate_cluster_add.js.diff?cvsroot=cluster&r1=1.10&r2=1.11
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/FenceHandler.py.diff?cvsroot=cluster&r1=1.20&r2=1.21
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterActions.py.diff?cvsroot=cluster&r1=1.3&r2=1.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterInfo.py.diff?cvsroot=cluster&r1=1.7&r2=1.8
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciDB.py.diff?cvsroot=cluster&r1=1.5&r2=1.6
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciZope.py.diff?cvsroot=cluster&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/PropsObject.py.diff?cvsroot=cluster&r1=1.6&r2=1.7
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/RicciQueries.py.diff?cvsroot=cluster&r1=1.4&r2=1.5
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/StorageReport.py.diff?cvsroot=cluster&r1=1.24&r2=1.25
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.262&r2=1.263
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/conga_constants.py.diff?cvsroot=cluster&r1=1.41&r2=1.42
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/common/XML.cpp.diff?cvsroot=cluster&r1=1.9&r2=1.10
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/test_suite/cluster/generate_xvm_key.xml.diff?cvsroot=cluster&r1=1.1&r2=1.2
--- conga/luci/cluster/index_html 2007/07/12 02:42:42 1.36
+++ conga/luci/cluster/index_html 2007/07/27 16:43:47 1.37
@@ -44,7 +44,7 @@
<tal:block tal:condition="firsttime">
<tal:block tal:define="global busywaiting python:True" />
<meta http-equiv="refresh"
- tal:attributes="content isBusy/refreshurl | python:'3%surl=/luci/cluster' % chr(0x3b)" />
+ tal:attributes="content isBusy/refreshurl | python:'5%surl=/luci/cluster' % chr(0x3b)" />
</tal:block>
<tal:block tal:define="global busy isBusy/busy | nothing" />
@@ -52,7 +52,7 @@
<tal:block tal:condition="busy">
<tal:block tal:define="global busywaiting python:True" />
<meta http-equiv="refresh"
- tal:attributes="content isBusy/refreshurl | python:'3%surl=/luci/cluster' % chr(0x3b)" />
+ tal:attributes="content isBusy/refreshurl | python:'5%surl=/luci/cluster' % chr(0x3b)" />
</tal:block>
</tal:block>
</metal:headslot>
--- conga/luci/cluster/validate_fence.js 2007/07/23 18:53:08 1.10
+++ conga/luci/cluster/validate_fence.js 2007/07/27 16:43:47 1.11
@@ -51,12 +51,22 @@
}
function validate_field_passwd(form, form_elem) {
+ var errors = [];
if (form_elem.disabled) {
clr_form_err(form_elem);
return (null);
}
- var errors = validate_field_str(form, form_elem);
+ if (!form_elem || !form_elem.value) {
+ if (!form_elem) {
+ errors.push('No value was given for this field.');
+ } else {
+ set_form_err(form_elem);
+ errors.push(form_elem.name + ' values must not be empty.');
+ }
+ return (errors);
+ }
+
if (errors && errors.length > 0 && form.passwd_script && !str_is_blank(form.passwd_script.value))
{
clr_form_err(form_elem);
--- conga/luci/homebase/validate_cluster_add.js 2007/07/11 22:47:07 1.10
+++ conga/luci/homebase/validate_cluster_add.js 2007/07/27 16:43:47 1.11
@@ -43,9 +43,13 @@
if (!view_certs || !view_certs.checked) {
var confirm_str = '';
if (form.addnode) {
- confirm_str = 'Add ' + (added_storage.length > 1 ? 'these nodes' : 'this node') + ' to the \"' + clustername + '\" cluster?';
+ confirm_str = 'Add ' + (added_storage.length > 1 ? 'these nodes' : 'this node') + ' to the \"' + clustername + '\" cluster?\nEach node added will be rebooted during this process.';
} else {
- confirm_str = 'Add the cluster \"' + clustername + '\" to the Luci management interface?';
+ if (form.cluster_create) {
+ confirm_str = 'All nodes added to this cluster will be rebooted as part of this process.\n\nCreate cluster \"' + clustername + '\"?';
+ } else {
+ confirm_str = 'Add the cluster \"' + clustername + '\" to the Luci management interface?';
+ }
}
if (confirm(confirm_str)) {
--- conga/luci/site/luci/Extensions/FenceHandler.py 2007/07/12 15:44:43 1.20
+++ conga/luci/site/luci/Extensions/FenceHandler.py 2007/07/27 16:43:47 1.21
@@ -772,7 +772,12 @@
try:
pwd = form['passwd'].strip()
if not pwd:
- raise Exception, 'blank'
+ if form['passwd']:
+ # allow passwords consisting of nothing but whitespace
+ fencedev.addAttribute('passwd', form['passwd'])
+ else:
+ raise Exception, 'blank'
+
fencedev.addAttribute('passwd', pwd)
has_passwd = True
except Exception, e:
@@ -1152,6 +1157,11 @@
fenceinst = Device()
fenceinst.addAttribute('name', parent_name)
+ if form.has_key('option'):
+ option = form['option'].strip()
+ if option:
+ fenceinst.addAttribute('option', option)
+
try:
ret = FI_VALIDATE[fence_agent](form, fenceinst)
if len(ret) > 0:
--- conga/luci/site/luci/Extensions/LuciClusterActions.py 2007/06/25 16:11:30 1.3
+++ conga/luci/site/luci/Extensions/LuciClusterActions.py 2007/07/27 16:43:47 1.4
@@ -245,7 +245,11 @@
return None
return True
-def NodeLeaveCluster(self, rc, clustername, nodename_resolved):
+def NodeLeaveCluster( self,
+ rc,
+ clustername,
+ nodename_resolved,
+ stop_cluster=False):
reported_cluname = None
try:
cluster_info = rc.cluster_info()
@@ -266,7 +270,7 @@
% nodename_resolved)
return None
- batch_number, result = rq.nodeLeaveCluster(rc)
+ batch_number, result = rq.nodeLeaveCluster(rc, cluster_shutdown=stop_cluster)
if batch_number is None or result is None:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('NLC2: %s: batch_number or result is None' \
@@ -367,7 +371,7 @@
# First, delete cluster.conf from node to be deleted.
# next, have node leave cluster.
- batch_number, result = rq.nodeLeaveCluster(rc, purge=False)
+ batch_number, result = rq.nodeLeaveCluster(rc, purge=True)
if batch_number is None or result is None:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('ND5: batch_number and/or result is None')
@@ -505,7 +509,8 @@
luci_log.debug_verbose('CStop1: [1] nodeDelete failed')
errors += 1
else:
- ret = NodeLeaveCluster(self, rc, clustername, nodename_resolved)
+ ret = NodeLeaveCluster(self, rc, clustername,
+ nodename_resolved, stop_cluster=True)
if ret is None:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('CStop2: [0] nodeLeave %s' \
--- conga/luci/site/luci/Extensions/LuciClusterInfo.py 2007/07/12 22:35:40 1.7
+++ conga/luci/site/luci/Extensions/LuciClusterInfo.py 2007/07/27 16:43:47 1.8
@@ -817,22 +817,19 @@
found = False
for item in status:
if (item['type'] == 'node') and (item['name'] == nodename):
+ if item['online'] == 'false':
+ nodestate = NODE_UNKNOWN
+ elif item['clustered'] == 'true':
+ nodestate = NODE_ACTIVE
+ else:
+ nodestate = NODE_INACTIVE
found = True
break
if found is False:
- item = {}
if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('getNodeInfo1: Unable to resolve node name in cluster status')
- return item
-
- # Now determine state of node...
- if item['online'] == 'false':
+ luci_log.debug_verbose('getNodeInfo1: Unable to find node "%s" in cluster status' % nodename)
nodestate = NODE_UNKNOWN
- elif item['clustered'] == 'true':
- nodestate = NODE_ACTIVE
- else:
- nodestate = NODE_INACTIVE
infohash['nodestate'] = nodestate
infohash['nodename'] = nodename
@@ -899,12 +896,10 @@
infohash['fdoms'] = fdom_dict_list
- # return infohash
infohash['d_states'] = None
-
nodename_resolved = resolve_nodename(self, clustername, nodename)
+
if nodestate == NODE_ACTIVE or nodestate == NODE_INACTIVE:
- # call service module on node and find out which daemons are running
try:
rc = RicciCommunicator(nodename_resolved)
if not rc:
@@ -916,6 +911,7 @@
% (nodename_resolved, str(e)))
if rc is not None:
+ # call service module on node and find out which daemons are running
dlist = list()
dlist.append('ccsd')
if not gulm_cluster:
--- conga/luci/site/luci/Extensions/LuciDB.py 2007/07/12 22:35:40 1.5
+++ conga/luci/site/luci/Extensions/LuciDB.py 2007/07/27 16:43:47 1.6
@@ -825,6 +825,7 @@
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('GRA8: cluster name is none for %s' \
% ricci_hostname)
+ raise Exception, '%s not in a cluster' % ricci_hostname
cur_alias = str(clu_info[1]).strip().lower()
if not cur_alias:
@@ -931,7 +932,7 @@
luci_log.debug_verbose('GCF0: cluster %s [%s] folder missing: %r %s -- returning empty map' % (cluname, path, e, str(e)))
return None
-def getClusterStatusDB(self, clustername, errmsg=None):
+def getClusterStatusDB(self, clustername):
results = list()
vals = {}
@@ -942,8 +943,6 @@
vals['quorate'] = '[unknown]'
vals['votes'] = '[unknown]'
vals['minQuorum'] = '[unknown]'
- if errmsg:
- vals['errmsg'] = errmsg
results.append(vals)
nodelist = getClusterDBNodes(self, clustername)
--- conga/luci/site/luci/Extensions/LuciZope.py 2007/06/25 16:03:38 1.2
+++ conga/luci/site/luci/Extensions/LuciZope.py 2007/07/27 16:43:47 1.3
@@ -128,11 +128,11 @@
ret = {}
for i in varlist:
pval = None
- if req.has_key(i):
+ if req and req.has_key(i):
pval = req[i].strip()
if not pval:
pval = None
- if pval is None:
+ if req and pval is None:
if req.form and req.form.has_key(i):
pval = req.form[i].strip()
if not pval:
--- conga/luci/site/luci/Extensions/PropsObject.py 2007/07/12 22:35:40 1.6
+++ conga/luci/site/luci/Extensions/PropsObject.py 2007/07/27 16:43:47 1.7
@@ -7,6 +7,7 @@
from Variable import parse_variable
from ricci_defines import PROPS_TAG
+import xml
import xml.dom
class PropsObject:
@@ -26,7 +27,7 @@
return self.__vars
def export_xml(self, doc, parent_node):
- props = doc.createElement(PROPS_TAG)
+ props = doc.createElement(str(PROPS_TAG))
parent_node.appendChild(props)
for var in self.__vars:
props.appendChild(self.__vars[var].export_xml(doc))
@@ -36,7 +37,7 @@
props = None
for node in parent_node.childNodes:
if node.nodeType == xml.dom.Node.ELEMENT_NODE:
- if node.nodeName == PROPS_TAG:
+ if node.nodeName == str(PROPS_TAG):
props = node
if props is None:
return self
@@ -47,3 +48,4 @@
except:
continue
return self
+
--- conga/luci/site/luci/Extensions/RicciQueries.py 2007/07/12 22:35:40 1.4
+++ conga/luci/site/luci/Extensions/RicciQueries.py 2007/07/27 16:43:47 1.5
@@ -701,17 +701,19 @@
try:
ret = rc.process_batch(batch)
+ if not ret:
+ raise Exception, 'no XML response'
except Exception, e:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('GCC1: process_batch error for %s: %r %s' \
% (system_info, e, str(e)))
return None
- if not ret:
- return None
-
var_nodes = ret.getElementsByTagName('var')
for i in var_nodes:
if i.getAttribute('name') == 'cluster.conf':
return i.childNodes[0]
+
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('GCC2: no conf node found')
return None
--- conga/luci/site/luci/Extensions/StorageReport.py 2007/06/25 16:03:38 1.24
+++ conga/luci/site/luci/Extensions/StorageReport.py 2007/07/27 16:43:47 1.25
@@ -2000,7 +2000,7 @@
'id' : '%s_origin' % bd['path'],
'type' : 'snapshot-origin'})
for snap in bd['snapshots']:
- high_list[d['id']].append('%s_snapshot', snap['path'])
+ high_list[d['id']].append('%s_snapshot' % snap['path'])
--- conga/luci/site/luci/Extensions/cluster_adapters.py 2007/07/23 18:53:08 1.262
+++ conga/luci/site/luci/Extensions/cluster_adapters.py 2007/07/27 16:43:47 1.263
@@ -1749,7 +1749,7 @@
ret = propagateClusterConfAsync(self, model, None, FENCEDEV_NODE_CONFIG,
'Updating fence configuration for node "%s"' % fvar['nodename'])
- if ret[1] is not True:
+ if ret[0] is not True:
return ret
request.RESPONSE.redirect('%s?pagetype=%s&clustername=%s&nodename=%s&busyfirst=true' % (baseurl, NODE, clustername, nodename))
@@ -2123,10 +2123,18 @@
% (baseurl, SERVICES, clustername))
def process_cluster_conf_editor(self, req):
- clustername = req['clustername']
+ if req.has_key('clustername'):
+ clustername = req['clustername'].strip() or None
+ else:
+ clustername = None
+
+ if clustername is None:
+ return { 'msg': 'No cluster name was given', 'cluster_conf': '' }
+
msg_list = list(('\n'))
- cc = ''
- if 'new_cluster_conf' in req:
+
+ cc = None
+ if req.has_key('new_cluster_conf'):
cc = req['new_cluster_conf']
msg_list.append('Checking if valid XML - ')
cc_xml = None
@@ -2147,12 +2155,10 @@
msg_list.append('Fix the error and try again:\n')
else:
msg_list.append('PASSED\n')
-
- msg_list.append('Incrementing the cluster version number - ')
model.setModified(True)
msg_list.append('DONE\n')
-
msg_list.append('Propagating the new cluster.conf')
+
rc = getRicciAgent(self, clustername)
if not rc:
if LUCI_DEBUG_MODE is True:
--- conga/luci/site/luci/Extensions/conga_constants.py 2007/06/25 16:11:30 1.41
+++ conga/luci/site/luci/Extensions/conga_constants.py 2007/07/27 16:43:47 1.42
@@ -134,7 +134,7 @@
'A problem occurred when starting this node: %s'
]
-REDIRECT_SEC = 3
+REDIRECT_SEC = 5
# cluster/node create error status messages
PRE_INSTALL = 'The install state is not yet complete.'
--- conga/ricci/common/XML.cpp 2007/06/25 16:03:42 1.9
+++ conga/ricci/common/XML.cpp 2007/07/27 16:43:47 1.10
@@ -119,15 +119,15 @@
xml += " " + name + "=\"" + value + "\"";
}
if (children().empty())
- xml += "/>";
+ xml += "/>\n";
else {
- xml += ">";
+ xml += ">\n";
for (list<XMLObject>::const_iterator iter = children().begin();
iter != children().end();
iter++) {
- iter->generate_xml(xml, indent);
+ iter->generate_xml(xml, indent + "\t");
}
- xml += indent + "</" + _tag + ">";
+ xml += indent + "</" + _tag + ">\n";
}
}
--- conga/ricci/test_suite/cluster/generate_xvm_key.xml 2007/07/23 18:47:51 1.1
+++ conga/ricci/test_suite/cluster/generate_xvm_key.xml 2007/07/27 16:43:47 1.2
@@ -4,7 +4,9 @@
<module name="cluster">
<request sequence="1254" API_version="1.0">
-<function_call name="generate_xvm_key" />
+<function_call name="generate_xvm_key">
+ <var mutable="false" name="size" type="int" value="4096" />
+</function_call>
</request>
</module>
next reply other threads:[~2007-07-27 16:49 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-27 16:49 rmccabe [this message]
-- strict thread matches above, loose matches on Subject: below --
2007-06-25 16:11 [Cluster-devel] conga luci/cluster/form-macros luci/cluster/in 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=20070727164910.28065.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.