[Cluster-devel] conga/luci cluster/form-chooser cluster/form-m ...
kupcevic at sourceware.org
kupcevic at sourceware.org
Thu Dec 21 21:26:21 UTC 2006
CVSROOT: /cvs/cluster
Module name: conga
Changes by: kupcevic at sourceware.org 2006-12-21 21:26:20
Modified files:
luci/cluster : form-chooser form-macros
luci/site/luci/Extensions: cluster_adapters.py
conga_constants.py
Log message:
luci: cluster.conf editor
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-chooser.diff?cvsroot=cluster&r1=1.14&r2=1.15
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-macros.diff?cvsroot=cluster&r1=1.136&r2=1.137
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.191&r2=1.192
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/conga_constants.py.diff?cvsroot=cluster&r1=1.31&r2=1.32
--- conga/luci/cluster/form-chooser 2006/12/06 18:38:53 1.14
+++ conga/luci/cluster/form-chooser 2006/12/21 21:26:20 1.15
@@ -152,6 +152,11 @@
<span tal:omit-tag="" tal:condition="python: ptype == '55'">
<div metal:use-macro="here/form-macros/macros/fencedevprocess-form"/>
</span>
+
+ <span tal:omit-tag="" tal:condition="python: ptype == '80'">
+ <div metal:use-macro="here/form-macros/macros/conf_editor-form"/>
+ </span>
+
</span>
</metal:choose-form>
</body>
--- conga/luci/cluster/form-macros 2006/12/21 05:08:48 1.136
+++ conga/luci/cluster/form-macros 2006/12/21 21:26:20 1.137
@@ -825,7 +825,8 @@
<tbody class="systemsTable">
<tr class="systemsTable">
- <td class="systemsTable">Post Fail Delay</td>
+ <td class="systemsTable">Post Fail <span tal:attributes="onclick python:'window.location.assign(\'./?pagetype=80&clustername=' + request['clustername'] + '\')'">Delay</span>
+ </td>
<td class="systemsTable">
<input type="text" name="post_fail_delay"
tal:attributes="value clusterinfo/pfd" />
@@ -3871,6 +3872,28 @@
<h2>Fence Device Process Form</h2>
</div>
+<div metal:define-macro="conf_editor-form">
+ <h2>Edit cluster.conf</h2>
+ <form method="post"
+ tal:attributes="action python: './?' + request['QUERY_STRING']"
+ tal:define="ret python: here.process_cluster_conf_editor(request)">
+ <span tal:content="structure python: ret['msg'].replace('\n', '<br/>')"/>
+ <textarea name="new_cluster_conf"
+ rows="80"
+ tal:content="structure ret/cluster_conf"></textarea>
+ <input tal:attributes="type string:hidden;
+ name string:pagetype;
+ value python:request['pagetype']"/>
+ <input tal:attributes="type string:hidden;
+ name string:clustername;
+ value python:request['clustername']"/>
+ <input type="button"
+ value="Reset"
+ tal:attributes="onclick python:'window.location.assign(\'./?pagetype=' + request['pagetype'] + '&clustername=' + request['clustername'] + '\')'"/>
+ <input type="submit" value="Propagate"/>
+ </form>
+</div>
+
</body>
</html>
--- conga/luci/site/luci/Extensions/cluster_adapters.py 2006/12/21 05:08:49 1.191
+++ conga/luci/site/luci/Extensions/cluster_adapters.py 2006/12/21 21:26:20 1.192
@@ -5799,3 +5799,68 @@
% (batch_id, task, desc, objpath, str(e))
luci_log.debug_verbose(errmsg)
raise Exception, errmsg
+
+
+
+
+
+
+
+
+
+
+
+def process_cluster_conf_editor(self, req):
+ clustername = req['clustername']
+ msg = '\n'
+ cc = ''
+ if 'new_cluster_conf' in req:
+ cc = req['new_cluster_conf']
+ msg += 'Checking if valid XML - '
+ cc_xml = None
+ try:
+ cc_xml = minidom.parseString(cc)
+ except:
+ pass
+ if cc_xml == None:
+ msg += 'FAILED\n'
+ msg += 'Fix the error and try again:\n'
+ else:
+ msg += 'PASSED\n'
+
+ msg += 'Making sure no clustername change has accured - '
+ new_name = cc_xml.firstChild.getAttribute('name')
+ if new_name != clustername:
+ msg += 'FAILED\n'
+ msg += 'Fix the error and try again:\n'
+ else:
+ msg += 'PASSED\n'
+
+ msg += 'Increasing cluster version number - '
+ version = cc_xml.firstChild.getAttribute('config_version')
+ version = int(version) + 1
+ cc_xml.firstChild.setAttribute('config_version', str(version))
+ msg += 'DONE\n'
+
+ msg += 'Propagating new cluster.conf'
+ rc = getRicciAgent(self, clustername)
+ if not rc:
+ luci_log.debug_verbose('VFA: unable to find a ricci agent for the %s cluster' % clustername)
+ msg += '\nUnable to contact a ricci agent for cluster ' + clustername + '\n\n'
+ else:
+ batch_id, result = setClusterConf(rc, cc_xml.toxml())
+ if batch_id is None or result is None:
+ luci_log.debug_verbose('VFA: setClusterConf: batchid or result is None')
+ msg += '\nUnable to propagate the new cluster configuration for ' + clustername + '\n\n'
+ else:
+ msg += ' - DONE\n'
+ cc = cc_xml.toxml()
+ msg += '\n\nALL DONE\n\n'
+ else:
+ if getClusterInfo(self, None, req) == {}:
+ msg = 'invalid cluster'
+ else:
+ model = req.SESSION.get('model')
+ cc = model.exportModelAsString()
+ return {'msg' : msg,
+ 'cluster_conf' : cc}
--- conga/luci/site/luci/Extensions/conga_constants.py 2006/12/21 03:42:49 1.31
+++ conga/luci/site/luci/Extensions/conga_constants.py 2006/12/21 21:26:20 1.32
@@ -46,6 +46,8 @@
SERVICE_DELETE = '56'
FENCEDEV_DELETE = "57"
+CONF_EDITOR = '80'
+
#Cluster tasks
CLUSTER_STOP = '1000'
CLUSTER_START = '1001'
More information about the Cluster-devel
mailing list