* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-07-15 18:20 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-07-15 18:20 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL5
Changes by: rmccabe at sourceware.org 2008-07-15 18:20:02
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: StorageReport.py
luci/storage : form-macros
Log message:
fix bz414551
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.96&r2=1.45.2.97
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/StorageReport.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.20.2.8&r2=1.20.2.9
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/storage/form-macros.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.17.2.13&r2=1.17.2.14
--- conga/conga.spec.in.in 2008/07/14 22:21:45 1.45.2.96
+++ conga/conga.spec.in.in 2008/07/15 18:19:58 1.45.2.97
@@ -305,6 +305,7 @@
- Fix bz441581 (Don't allow both label and device for qdisk config if only one can be specified)
- Fix bz223785 (Storage 'Display Devices by' option does not work)
- Fix bz250439 (conga is unable to delete snapshot volumes)
+- Fix bz414551 (Sector size list is improperly sorted)
* Fri Apr 18 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-8
- Fix bz441580 (conga should install 'sg3_utils' and start service 'scsi_reserve' when scsi fencing is used)
--- conga/luci/site/luci/Extensions/StorageReport.py 2008/04/14 15:58:35 1.20.2.8
+++ conga/luci/site/luci/Extensions/StorageReport.py 2008/07/15 18:19:58 1.20.2.9
@@ -1621,9 +1621,10 @@
mutable = var.getAttribute('mutable') == 'true'
var_type = var.getAttribute('type')
value = var.getAttribute('value')
+ def_value = value
d_units = ''
- if name in ('size', 'extent_size', 'block_size', 'size_free', 'partition_begin' ):
+ if name in ('size', 'extent_size', 'block_size', 'journal_size', 'size_free', 'partition_begin' ):
d_units = 'bytes'
if 'percent' in name:
d_units = '%'
@@ -1697,6 +1698,7 @@
'name': name,
'pretty_name': get_pretty_prop_name(name),
'type': d_type,
+ 'default_val': def_value,
'value': d_value,
'units': d_units,
'validation': validation_data,
--- conga/luci/storage/form-macros 2008/07/14 21:59:09 1.17.2.13
+++ conga/luci/storage/form-macros 2008/07/15 18:19:59 1.17.2.14
@@ -867,21 +867,28 @@
<tal:block tal:condition="python:prop_type == 'select'">
<select tal:define="prop_options prop/value" tal:attributes="name p">
- <tal:block
- tal:condition="python: prop_units != 'bytes'"
- tal:repeat="prop_opt prop_options">
- <option tal:attributes="value prop_opt" />
- <span tal:replace="prop_opt" />
+ <tal:block tal:condition="python: prop_units != 'bytes'">
+ <tal:block tal:repeat="prop_opt prop_options">
+ <option tal:attributes="value prop_opt" />
+ <span tal:replace="prop_opt" />
+ </tal:block>
</tal:block>
- <tal:block
- tal:condition="python: prop_units == 'bytes'"
- tal:repeat="prop_opt prop_options">
- <option tal:attributes="value prop_opt" />
- <span
+
+ <tal:block tal:condition="python: prop_units == 'bytes'">
+ <tal:block
tal:define="
- dummy python: here.bytes_to_value_units(prop_opt);
- value python: str(dummy[0]) + ' ' + str(dummy[1])"
- tal:replace="value" />
+ dummy2 python:map(lambda x: int(x), prop_options);
+ dummy3 python:dummy2.sort()"
+ tal:repeat="prop_opt dummy2">
+ <option tal:attributes="
+ value prop_opt;
+ selected python:prop.get('default_val') == str(prop_opt) and 'selected' or ''" />
+ <span
+ tal:define="
+ dummy python: here.bytes_to_value_units(prop_opt);
+ value python: str(dummy[0]) + ' ' + str(dummy[1])"
+ tal:replace="value" />
+ </tal:block>
</tal:block>
</select>
</tal:block>
^ permalink raw reply [flat|nested] 21+ messages in thread* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-09-17 6:29 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-09-17 6:29 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL5
Changes by: rmccabe at sourceware.org 2008-09-17 06:29:55
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: RicciQueries.py cluster_adapters.py
Log message:
Fix bz459623
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.101&r2=1.45.2.102
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/RicciQueries.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.10&r2=1.1.4.11
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.120.2.46&r2=1.120.2.47
--- conga/conga.spec.in.in 2008/08/27 14:59:17 1.45.2.101
+++ conga/conga.spec.in.in 2008/09/17 06:29:54 1.45.2.102
@@ -315,6 +315,7 @@
* Wed Aug 27 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.1-4
- Fix bz459562 (charset configuration fix for luci)
- Fix bz459469 (An unknown device type was given: "gnbd.")
+- Fix bz459623 (Conga error adding new node to existing cluster)
* Thu Aug 07 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.1-3
- More fixes for bz429350
--- conga/luci/site/luci/Extensions/RicciQueries.py 2008/03/12 15:13:12 1.1.4.10
+++ conga/luci/site/luci/Extensions/RicciQueries.py 2008/09/17 06:29:54 1.1.4.11
@@ -6,12 +6,10 @@
# Free Software Foundation.
from xml.dom import minidom
-from ricci_communicator import RicciCommunicator
+from ricci_communicator import RicciCommunicator, batch_status
from LuciSyslog import get_logger
from conga_constants import LUCI_DEBUG_MODE
-
-
luci_log = get_logger()
def addClusterNodeBatch(cluster_name,
@@ -115,7 +113,7 @@
batch.append('<module name="cluster">')
batch.append('<request API_version="1.0">')
batch.append('<function_call name="start_node">')
- batch.append('<var mutable="false" name="enable_services" type="boolean" value="true"/>"')
+ batch.append('<var mutable="false" name="enable_services" type="boolean" value="true"/>')
batch.append('</function_call>')
batch.append('</request>')
batch.append('</module>')
@@ -342,6 +340,30 @@
ricci_xml = rc.batch_run(batch_str)
return batchAttemptResult(ricci_xml)
+def setClusterConfSync(rc, clusterconf, propagate=True):
+ if propagate is True:
+ propg = 'true'
+ else:
+ propg = 'false'
+
+ conf = str(clusterconf).replace('<?xml version="1.0"?>', '')
+ conf = conf.replace('<?xml version="1.0" ?>', '')
+ conf = conf.replace('<? xml version="1.0"?>', '')
+ conf = conf.replace('<? xml version="1.0" ?>', '')
+
+ batch_str = '<module name="cluster"><request API_version="1.0"><function_call name="set_cluster.conf"><var type="boolean" name="propagate" mutable="false" value="%s"/><var type="xml" mutable="false" name="cluster.conf">%s</var></function_call></request></module>' % (propg, conf)
+
+ ricci_xml = rc.batch_run(batch_str, async=False)
+ if not ricci_xml:
+ return False
+ batch_xml = ricci_xml.getElementsByTagName('batch')
+ if not batch_xml:
+ return None
+ (num, total) = batch_status(batch_xml[0])
+ if num == total:
+ return True
+ return False
+
def getNodeLogs(rc):
from time import time, ctime
--- conga/luci/site/luci/Extensions/cluster_adapters.py 2008/07/17 16:36:56 1.120.2.46
+++ conga/luci/site/luci/Extensions/cluster_adapters.py 2008/09/17 06:29:54 1.120.2.47
@@ -378,8 +378,8 @@
if cluster_os is None:
if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('Unable to determine cluster OS for %s' % clustername)
- return (False, { 'errors': [ 'Unable to determine the version of the cluster suite this cluster is running' ] })
+ luci_log.debug_verbose('Unable to determine the operating system version for %s' % clustername)
+ return (False, { 'errors': [ 'Unable to determine the version of the cluster software this cluster is running' ] })
shared_storage = False
try:
@@ -547,41 +547,22 @@
try:
skeys = system_list.keys()
skeys.sort()
+ batch_node = rq.addClusterNodeBatch(clustername,
+ True,
+ True,
+ shared_storage,
+ False,
+ download_pkgs,
+ model.GULM_ptr is not None,
+ reboot_nodes)
+ batch_node_xml = minidom.parseString('<batch>%s</batch>' % batch_node)
+ batch_node_xml = batch_node_xml.getElementsByTagName('batch')[0]
+ if not batch_node_xml:
+ raise Exception, 'batch is blank'
+
for x in skeys:
i = system_list[x]
-
- try:
- batch_node = rq.addClusterNodeBatch(clustername,
- True,
- True,
- shared_storage,
- False,
- download_pkgs,
- model.GULM_ptr is not None,
- reboot_nodes)
- if not batch_node:
- raise Exception, 'batch is blank'
- system_list[x]['batch'] = batch_node
- except Exception, e:
- cur_system['errors'] = True
- incomplete = True
-
- try:
- if not cur_system['prev_auth']:
- rc.unauth()
- del cur_system['trusted']
- except Exception, e:
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('VACN12: %s: %r %s' \
- % (cur_host, e, str(e)))
-
- errors.append('Unable to initiate cluster join for node "%s"' \
- % cur_host)
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('VACN13: %s: %r %s' \
- % (cur_host, e, str(e)))
- continue
-
+ system_list[x]['batch'] = batch_node_xml
next_node_id += 1
new_node = ClusterNode()
new_node.attr_hash['name'] = str(i['host'])
@@ -600,36 +581,20 @@
if not conf_str:
raise Exception, 'Unable to save the new cluster model'
- batch_number, result = rq.setClusterConf(cluster_ricci, conf_str)
- if not batch_number or not result:
- raise Exception, 'batch or result is None'
+ # Propagate the new cluster.conf to the existing nodes
+ # before having any of the new nodes join. If this fails,
+ # abort the whole process.
+ result = rq.setClusterConfSync(cluster_ricci, conf_str)
+ if result != True:
+ errors.append('Unable to update the cluster configuration on existing cluster nodes')
+ request.SESSION.set('add_node', add_cluster)
+ return (False, { 'errors': errors, 'messages': messages })
except Exception, e:
incomplete = True
errors.append('Unable to generate the new cluster configuration')
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('VACN14: %s' % e)
- # Propagate the new cluster.conf to the existing nodes
- # before having any of the new nodes join. If this fails,
- # abort the whole process.
- try:
- while True:
- batch_ret = cluster_ricci.batch_status(batch_number)
- code = batch_ret[0]
- if code is True:
- break
- if code == -1:
- errors.append(batch_ret[1])
- raise Exception, str(batch_ret[1])
- if code is False:
- time.sleep(0.5)
- except Exception, e:
- incomplete = True
- errors.append('Unable to update the cluster node list for %s' \
- % clustername)
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('VACN15: %r %s' % (e, str(e)))
-
if incomplete or len(errors) > 0:
request.SESSION.set('add_node', add_cluster)
return (False, { 'errors': errors, 'messages': messages })
^ permalink raw reply [flat|nested] 21+ messages in thread* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-07-14 16:29 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-07-14 16:29 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL5
Changes by: rmccabe at sourceware.org 2008-07-14 16:29:29
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: cluster_adapters.py
Log message:
Fix bz433089
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.92&r2=1.45.2.93
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.120.2.44&r2=1.120.2.45
--- conga/conga.spec.in.in 2008/07/14 16:03:34 1.45.2.92
+++ conga/conga.spec.in.in 2008/07/14 16:29:28 1.45.2.93
@@ -301,6 +301,7 @@
- Fix bz206570 (RFE: vm list from ricci)
- Fix bz430737 (Conga should install the 'cmirror' package when clustered storage is requested)
- Fix bz379461 (Conga doesn't have the option for modulename for drac fencing)
+- Fix bz433089 (when adding multiple nodes the order is reversed.)
* Fri Apr 18 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-8
- Fix bz441580 (conga should install 'sg3_utils' and start service 'scsi_reserve' when scsi fencing is used)
--- conga/luci/site/luci/Extensions/cluster_adapters.py 2008/04/18 20:34:50 1.120.2.44
+++ conga/luci/site/luci/Extensions/cluster_adapters.py 2008/07/14 16:29:28 1.120.2.45
@@ -545,7 +545,9 @@
next_node_id = 1
try:
- for x in system_list:
+ skeys = system_list.keys()
+ skeys.sort()
+ for x in skeys:
i = system_list[x]
try:
^ permalink raw reply [flat|nested] 21+ messages in thread
* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-05-12 17:09 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-05-12 17:09 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL4
Changes by: rmccabe at sourceware.org 2008-05-12 17:09:53
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: LuciValidation.py
make : version.in
Log message:
fix 446082: Adding multiple fence devices at the same time causes duplicate entries
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.67.2.28&r2=1.67.2.29
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciValidation.py.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.9.2.1&r2=1.9.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/make/version.in.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.28.2.13&r2=1.28.2.14
--- conga/conga.spec.in.in 2008/04/28 03:49:07 1.67.2.28
+++ conga/conga.spec.in.in 2008/05/12 17:09:53 1.67.2.29
@@ -300,6 +300,9 @@
%changelog
+* Mon May 12 2008 Ryan McCabe <rmccabe@redhat.com> 0.11.1-5
+- Fix bz446082 (Adding multiple fence devices at the same time causes duplicate entries)
+
* Mon Apr 29 2008 Ryan McCabe <rmccabe@redhat.com> 0.11.1-4
- Fix bz444195 (conga writes 'exportpath' instead of 'export' attribute for netfs)
--- conga/luci/site/luci/Extensions/LuciValidation.py 2008/03/25 01:27:12 1.9.2.1
+++ conga/luci/site/luci/Extensions/LuciValidation.py 2008/05/12 17:09:53 1.9.2.2
@@ -87,7 +87,7 @@
fence_method.addAttribute('name', str(method_id))
levels[min(1, fence_level - 1)] = fence_method
except Exception, e:
- method_id = fence_level
+ method_id = str(fence_level)
fence_method = Method()
fence_method.addAttribute('name', str(method_id))
--- conga/make/version.in 2008/04/28 03:49:07 1.28.2.13
+++ conga/make/version.in 2008/05/12 17:09:53 1.28.2.14
@@ -1,2 +1,2 @@
VERSION=0.11.1
-RELEASE=4
+RELEASE=5
^ permalink raw reply [flat|nested] 21+ messages in thread* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-05-12 17:04 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-05-12 17:04 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL5
Changes by: rmccabe at sourceware.org 2008-05-12 17:04:41
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: LuciValidation.py
make : version.in
ricci/modules/cluster/clumon: Makefile
Log message:
Fix bz444210 (Adding multiple fence devices at the same time causes duplicate entries)
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.85&r2=1.45.2.86
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciValidation.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.6.2.3&r2=1.6.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/make/version.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.21.2.39&r2=1.21.2.40
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/cluster/clumon/Makefile.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.4.2.3&r2=1.4.2.4
--- conga/conga.spec.in.in 2008/05/12 15:13:32 1.45.2.85
+++ conga/conga.spec.in.in 2008/05/12 17:04:41 1.45.2.86
@@ -292,6 +292,7 @@
### changelog ###
%changelog
* Mon Apr 27 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-9
+- Fix bz444210 (Adding multiple fence devices at the same time causes duplicate entries)
- Fix bz444381 (conga writes 'exportpath' instead of 'export' attribute for netfs)
* Fri Apr 18 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-8
--- conga/luci/site/luci/Extensions/LuciValidation.py 2008/03/12 15:13:12 1.6.2.3
+++ conga/luci/site/luci/Extensions/LuciValidation.py 2008/05/12 17:04:41 1.6.2.4
@@ -87,7 +87,7 @@
fence_method.addAttribute('name', str(method_id))
levels[min(1, fence_level - 1)] = fence_method
except Exception, e:
- method_id = fence_level
+ method_id = str(fence_level)
fence_method = Method()
fence_method.addAttribute('name', str(method_id))
--- conga/make/version.in 2008/05/12 15:13:32 1.21.2.39
+++ conga/make/version.in 2008/05/12 17:04:41 1.21.2.40
@@ -1,2 +1,2 @@
-VERSION=0.14.0
-RELEASE=1
+VERSION=0.12.0
+RELEASE=9
--- conga/ricci/modules/cluster/clumon/Makefile 2008/05/12 15:13:33 1.4.2.3
+++ conga/ricci/modules/cluster/clumon/Makefile 2008/05/12 17:04:41 1.4.2.4
@@ -11,7 +11,6 @@
top_srcdir=../../..
UNINSTALL=${top_srcdir}/scripts/uninstall.pl
-include ${top_srcdir}/make/version.in
include ${top_srcdir}/make/defines.mk
all:
^ permalink raw reply [flat|nested] 21+ messages in thread* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-04-28 3:54 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-04-28 3:54 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL5
Changes by: rmccabe at sourceware.org 2008-04-28 03:54:18
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: ResourceHandler.py
make : version.in
Log message:
- Fix bz444381 (conga writes 'exportpath' instead of 'export' attribute for netfs)
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.83&r2=1.45.2.84
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ResourceHandler.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.3&r2=1.1.4.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/make/version.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.21.2.37&r2=1.21.2.38
--- conga/conga.spec.in.in 2008/04/23 17:27:10 1.45.2.83
+++ conga/conga.spec.in.in 2008/04/28 03:54:18 1.45.2.84
@@ -291,7 +291,10 @@
### changelog ###
%changelog
--* Fri Apr 18 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-8
+* Mon Apr 27 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-9
+- Fix bz444381 (conga writes 'exportpath' instead of 'export' attribute for netfs)
+
+* Fri Apr 18 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-8
- Fix bz441580 (conga should install 'sg3_utils' and start service 'scsi_reserve' when scsi fencing is used)
- Fix bz441573 ("nodename" field for fence_scsi disabled when adding a new fence device/instance)
- Fix bz442997 (Luci inserts "hostname" instead of "ipaddr" for rsa II fencing device)
--- conga/luci/site/luci/Extensions/ResourceHandler.py 2008/03/12 15:13:12 1.1.4.3
+++ conga/luci/site/luci/Extensions/ResourceHandler.py 2008/04/28 03:54:18 1.1.4.4
@@ -274,7 +274,7 @@
exportpath = form['exportpath'].strip()
if not exportpath:
raise Exception, 'No export path was given for "%s"' % rname
- res.addAttribute('exportpath', exportpath)
+ res.addAttribute('export', exportpath)
except Exception, e:
err = str(e)
errors.append(err)
--- conga/make/version.in 2008/04/11 06:54:43 1.21.2.37
+++ conga/make/version.in 2008/04/28 03:54:18 1.21.2.38
@@ -1,2 +1,2 @@
VERSION=0.12.0
-RELEASE=8
+RELEASE=9
^ permalink raw reply [flat|nested] 21+ messages in thread* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-04-28 3:49 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-04-28 3:49 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL4
Changes by: rmccabe at sourceware.org 2008-04-28 03:49:08
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: ResourceHandler.py
make : version.in
Log message:
- Fix bz444195 (conga writes 'exportpath' instead of 'export' attribute for netfs)
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.67.2.27&r2=1.67.2.28
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ResourceHandler.py.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.2.2.2&r2=1.2.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/make/version.in.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.28.2.12&r2=1.28.2.13
--- conga/conga.spec.in.in 2008/04/21 18:15:17 1.67.2.27
+++ conga/conga.spec.in.in 2008/04/28 03:49:07 1.67.2.28
@@ -300,6 +300,9 @@
%changelog
+* Mon Apr 29 2008 Ryan McCabe <rmccabe@redhat.com> 0.11.1-4
+- Fix bz444195 (conga writes 'exportpath' instead of 'export' attribute for netfs)
+
* Fri Apr 18 2008 Ryan McCabe <rmccabe@redhat.com> 0.11.1-3
- Fix bz442729 (Add UI support for ssh for fence agents that now support it)
--- conga/luci/site/luci/Extensions/ResourceHandler.py 2008/03/25 01:27:12 1.2.2.2
+++ conga/luci/site/luci/Extensions/ResourceHandler.py 2008/04/28 03:49:07 1.2.2.3
@@ -271,10 +271,10 @@
luci_log.debug_verbose('addNfsm7: %s' % err)
try:
- exportpath = form['exportpath'].strip()
+ exportpath = form['export'].strip()
if not exportpath:
raise Exception, 'No export path was given for "%s"' % rname
- res.addAttribute('exportpath', exportpath)
+ res.addAttribute('export', exportpath)
except Exception, e:
err = str(e)
errors.append(err)
--- conga/make/version.in 2008/04/21 18:16:00 1.28.2.12
+++ conga/make/version.in 2008/04/28 03:49:07 1.28.2.13
@@ -1,2 +1,2 @@
VERSION=0.11.1
-RELEASE=3
+RELEASE=4
^ permalink raw reply [flat|nested] 21+ messages in thread* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-04-18 20:34 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-04-18 20:34 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL5
Changes by: rmccabe at sourceware.org 2008-04-18 20:34:51
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: cluster_adapters.py
Log message:
Fix bz443152
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.81&r2=1.45.2.82
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.120.2.43&r2=1.120.2.44
--- conga/conga.spec.in.in 2008/04/18 04:15:52 1.45.2.81
+++ conga/conga.spec.in.in 2008/04/18 20:34:50 1.45.2.82
@@ -292,6 +292,7 @@
### changelog ###
%changelog
* Thu Apr 10 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-8
+- Fix bz443152 (Exception generated when adding or updating failover domains)
- Fix bz441580 (conga should install 'sg3_utils' and start service 'scsi_reserve' when scsi fencing is used)
- Fix bz441573 ("nodename" field for fence_scsi disabled when adding a new fence device/instance)
- Fix bz442997 (Luci inserts "hostname" instead of "ipaddr" for rsa II fencing device)
--- conga/luci/site/luci/Extensions/cluster_adapters.py 2008/03/12 15:13:12 1.120.2.43
+++ conga/luci/site/luci/Extensions/cluster_adapters.py 2008/04/18 20:34:50 1.120.2.44
@@ -1017,7 +1017,7 @@
luci_log.debug_verbose('validateFdom0: no model')
return (False, { 'errors': [ 'Unable to retrieve the cluster configuration for %s. The configuration XML may contain errors' % clustername ]})
- ret = validate_fdom(self, request)
+ ret = validate_fdom(model, request)
if ret[0] is not True:
return ret
^ permalink raw reply [flat|nested] 21+ messages in thread* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-04-14 15:58 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-04-14 15:58 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL5
Changes by: rmccabe at sourceware.org 2008-04-14 15:58:35
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: StorageReport.py
ricci/modules/cluster: ClusterStatus.cpp
ricci/modules/rpm: PackageHandler.cpp
ricci/modules/service: ServiceManager.cpp
Log message:
fix bz441580: conga should install 'sg3_utils' and start service 'scsi_reserve' when scsi fencing is used
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.77&r2=1.45.2.78
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/StorageReport.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.20.2.7&r2=1.20.2.8
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/cluster/ClusterStatus.cpp.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.15.2.6&r2=1.15.2.7
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/rpm/PackageHandler.cpp.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.9.2.8&r2=1.9.2.9
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/service/ServiceManager.cpp.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.5.2.6&r2=1.5.2.7
--- conga/conga.spec.in.in 2008/04/11 06:54:43 1.45.2.77
+++ conga/conga.spec.in.in 2008/04/14 15:58:35 1.45.2.78
@@ -292,6 +292,7 @@
### changelog ###
%changelog
* Thu Apr 10 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-8
+- Fix bz441580 (conga should install 'sg3_utils' and start service 'scsi_reserve' when scsi fencing is used)
- Fix bz441573 ("nodename" field for fence_scsi disabled when adding a new fence device/instance)
* Wed Feb 27 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-6
--- conga/luci/site/luci/Extensions/StorageReport.py 2008/01/23 04:44:32 1.20.2.7
+++ conga/luci/site/luci/Extensions/StorageReport.py 2008/04/14 15:58:35 1.20.2.8
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2007 Red Hat, Inc.
+# Copyright (C) 2006-2008 Red Hat, Inc.
#
# This program is free software; you can redistribute
# it and/or modify it under the terms of version 2 of the
--- conga/ricci/modules/cluster/ClusterStatus.cpp 2008/02/12 17:40:38 1.15.2.6
+++ conga/ricci/modules/cluster/ClusterStatus.cpp 2008/04/14 15:58:35 1.15.2.7
@@ -218,6 +218,7 @@
run_initd("clvmd", true, false);
run_initd("gfs", true, false);
run_initd("rgmanager", true, true);
+ run_initd("scsi_reserve", true, false);
if (enable_services) {
// enable them on boot
@@ -239,6 +240,7 @@
run_chkconfig("clvmd", true);
run_chkconfig("gfs", true);
run_chkconfig("rgmanager", true);
+ run_chkconfig("scsi_reserve", true);
}
} else if (stat.get_attr("cluster_version") == "5") {
try {
@@ -266,6 +268,7 @@
run_initd("clvmd", true, false);
run_initd("gfs", true, false);
run_initd("gfs2", true, false);
+ run_initd("scsi_reserve", true, false);
run_initd("rgmanager", true, true);
if (enable_services) {
@@ -278,6 +281,7 @@
run_chkconfig("clvmd", true);
run_chkconfig("gfs", true);
run_chkconfig("gfs2", true);
+ run_chkconfig("scsi_reserve", true);
run_chkconfig("rgmanager", true);
}
} else {
--- conga/ricci/modules/rpm/PackageHandler.cpp 2008/02/12 17:40:39 1.9.2.8
+++ conga/ricci/modules/rpm/PackageHandler.cpp 2008/04/14 15:58:35 1.9.2.9
@@ -493,6 +493,7 @@
PackageSet set("Clustered Storage");
set.packages.push_back("lvm2-cluster");
+ set.packages.push_back("sg3_utils");
if (RHEL4 || FC5) {
set.packages.push_back("GFS");
--- conga/ricci/modules/service/ServiceManager.cpp 2008/02/12 17:40:39 1.5.2.6
+++ conga/ricci/modules/service/ServiceManager.cpp 2008/04/14 15:58:35 1.5.2.7
@@ -519,11 +519,13 @@
descr = "Shared Storage: clvmd, gfs";
servs.push_back("clvmd");
servs.push_back("gfs");
+ servs.push_back("scsi_reserve");
} else if (RHEL5 || FC6) {
descr = "Shared Storage: clvmd, gfs, gfs2";
servs.push_back("clvmd");
servs.push_back("gfs");
servs.push_back("gfs2");
+ servs.push_back("scsi_reserve");
}
s = ServiceSet(name, descr);
if (populate_set(s, servs))
^ permalink raw reply [flat|nested] 21+ messages in thread* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-01-14 20:51 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-01-14 20:51 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Changes by: rmccabe at sourceware.org 2008-01-14 20:51:42
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: cluster_adapters.py LuciDB.py
luci/cluster : busy_wait-macro
Log message:
Fix bz239387 (RFE: add timeouts for actions that can leave cluster unreachable)
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&r1=1.91&r2=1.92
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.277&r2=1.278
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciDB.py.diff?cvsroot=cluster&r1=1.7&r2=1.8
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/busy_wait-macro.diff?cvsroot=cluster&r1=1.1&r2=1.2
--- conga/conga.spec.in.in 2008/01/03 16:27:48 1.91
+++ conga/conga.spec.in.in 2008/01/14 20:51:42 1.92
@@ -302,6 +302,7 @@
- Fixed bz253727 (RFE: graphical view should be default in partiton tables view)
- Fixed bz337041 (Add option to not fail-back service)
- Fixed bz264161 (RFE: support setting the "__independent_subtree" attribute on cluster resources)
+- Fixed bz239387 (RFE: add timeouts for actions that can leave cluster unreachable)
* Mon Aug 27 2007 Ryan McCabe <rmccabe@redhat.com> 0.10.0-6
- Fixed bz253783
--- conga/luci/site/luci/Extensions/cluster_adapters.py 2008/01/02 21:00:32 1.277
+++ conga/luci/site/luci/Extensions/cluster_adapters.py 2008/01/14 20:51:42 1.278
@@ -40,7 +40,7 @@
batch_status, extract_module_status
from LuciDB import manageCluster, createClusterSystems, \
- setNodeStatus, getStorageNode, getClusterFlags, \
+ setNodeStatus, getStorageNode, getClusterFlags, del_node_flag, \
getClusterNode, buildClusterCreateFlags, getClusterDBObj, \
resolve_nodename, set_node_flag, getRicciAgent, \
CLUSTER_NODE_NEED_AUTH
@@ -1102,6 +1102,30 @@
request.RESPONSE.redirect('%s?pagetype=%s&clustername=%s&tab=2&busyfirst=true' \
% (baseurl, CLUSTER_CONFIG, clustername))
+def validate_stop_waiting(self, request):
+ fvar = GetReqVars(request, [ 'clustername', 'node', 'batchid', 'refreshurl' ])
+
+ batchid = fvar['batchid']
+ node = fvar['node']
+ clustername = fvar['clustername']
+
+ if node is None:
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('VSW0: no node name given')
+
+ if clustername is None:
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('VSW1: no cluster name was given')
+
+ if node and clustername:
+ try:
+ del_node_flag(self, clustername, node, batchid)
+ except Exception, e:
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('VSW2: [%s %s %s] %r %s' \
+ % (node, clustername, batchid, e, str(e)))
+ request.RESPONSE.redirect(fvar['refreshurl'])
+
def process_cluster_conf_editor(self, req):
if req.has_key('clustername'):
clustername = req['clustername'].strip() or None
@@ -1181,6 +1205,7 @@
57: deleteFenceDevice,
58: validateNodeFenceConfig,
60: validate_xvm_key_dist,
+ 61: validate_stop_waiting,
80: process_cluster_conf_editor,
1001: validate_clusvc_async
}
@@ -1524,6 +1549,7 @@
isBusy = False
redirect_message = False
nodereports = list()
+ report_index = 0
fvar = GetReqVars(req, [ 'clustername', 'URL' ])
busy_map['nodereports'] = nodereports
@@ -1571,13 +1597,21 @@
# If complete, report status and remove flag.
for item in items:
+ node_report = {}
tasktype = item[1].getProperty(TASKTYPE)
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('ICB3: task type for %s = %s' \
% (item[0], tasktype))
+
+ ricci = item[0].split('____')[0]
+
+ node_report['node'] = ricci
+ node_report['tasktype'] = tasktype
+ node_report['clustername'] = cluname
+ node_report['report_index'] = report_index
+ report_index += 1
if tasktype == CLUSTER_ADD or tasktype == NODE_ADD:
- node_report = {}
node_report['isnodecreation'] = True
# Default value
node_report['iserror'] = False
@@ -1585,14 +1619,13 @@
batch_xml = None
# This removes the 'flag' suffix
- ricci = item[0].split('____')
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('ICB4: using rc host %s for item %s' \
- % (ricci[0], item[0]))
+ % (ricci, item[0]))
try:
- rc = RicciCommunicator(ricci[0])
+ rc = RicciCommunicator(ricci)
if not rc:
rc = None
if LUCI_DEBUG_MODE is True:
@@ -1615,12 +1648,14 @@
luci_log.debug_verbose('ICB8: failed to get batch_id from %s: %r %s' % (item[0], e, str(e)))
if batch_id is not None:
+ node_report['batchid'] = batch_id
try:
batch_xml = rc.batch_report(batch_id)
if batch_xml is not None:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('ICB9: batch_xml for %s from batch_report is not None -- getting batch status' % batch_id)
(creation_status, total) = batch_status(batch_xml)
+
try:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('ICB10: batch status returned (%d,%d)' % (creation_status, total))
@@ -1669,7 +1704,7 @@
# an error was encountered
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('ICB17: %s: CS %d for %s' \
- % (cluname, creation_status, ricci[0]))
+ % (cluname, creation_status, ricci))
if creation_status == RICCI_CONNECT_FAILURE:
laststatus = item[1].getProperty(LAST_STATUS)
@@ -1737,8 +1772,8 @@
try:
if del_db_obj is True:
if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('ICB19: %s node creation failed for %s: %d: deleting DB entry' % (cluname, ricci[0], creation_status))
- clusterfolder.manage_delObjects([ricci[0]])
+ luci_log.debug_verbose('ICB19: %s node creation failed for %s: %d: deleting DB entry' % (cluname, ricci, creation_status))
+ clusterfolder.manage_delObjects([ricci])
clusterfolder.manage_delObjects([item[0]])
except Exception, e:
if LUCI_DEBUG_MODE is True:
@@ -1764,8 +1799,8 @@
% (item[0], e, str(e)))
continue
else:
- busy_map['busy'] = 'true'
isBusy = True
+ busy_map['busy'] = 'true'
node_report['statusmessage'] = 'Node still being created'
node_report['statusindex'] = creation_status
nodereports.append(node_report)
@@ -1783,13 +1818,11 @@
luci_log.debug_verbose('ICB23: last_status err: %s %d: %r %s' % (item[0], creation_status, e, str(e)))
continue
else:
- node_report = {}
node_report['isnodecreation'] = False
# This removes the 'flag' suffix
- ricci = item[0].split('____')
try:
- rc = RicciCommunicator(ricci[0])
+ rc = RicciCommunicator(ricci)
except Exception, e:
rc = None
finished = -1
@@ -1797,7 +1830,7 @@
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('ICB24: ricci error: %s: %r %s' \
- % (ricci[0], e, str(e)))
+ % (ricci, e, str(e)))
if rc is not None:
batch_num = item[1].getProperty(BATCH_ID)
@@ -1825,9 +1858,8 @@
% (item[0], e, str(e)))
busy_map['busy'] = None
else:
- node_report = {}
- busy_map['busy'] = 'true'
isBusy = True
+ busy_map['busy'] = 'true'
node_report['desc'] = item[1].getProperty(FLAG_DESC)
nodereports.append(node_report)
--- conga/luci/site/luci/Extensions/LuciDB.py 2007/08/20 16:31:13 1.7
+++ conga/luci/site/luci/Extensions/LuciDB.py 2008/01/14 20:51:42 1.8
@@ -84,6 +84,38 @@
luci_log.debug_verbose('clearNodeStatus0: %r %s' \
% (e, str(e)))
+def del_node_flag(self, cluname, agent, batchid=None):
+ path = str('%s%s' % (CLUSTER_FOLDER_PATH, cluname))
+ objname = '%s____flag' % agent
+
+ try:
+ flag_obj = self.restrictedTraverse(str('%s/%s' % (path, objname)))
+ clusterfolder = self.restrictedTraverse(path)
+ except Exception, e:
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('DNF0: %s/%s: %s %r %s' \
+ % (path, objname, flag_obj[0], e, str(e)))
+ return False
+
+ if batchid:
+ try:
+ bid = flag_obj.getProperty(BATCH_ID)
+ if bid != batchid:
+ raise Exception, 'mismatch: got %s, wanted %s' % (bid, batchid)
+ except Exception, e1:
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('DNF1: unable to find flag with bid: %s for %s/%s: %r %s' % (batchid, path, objname, e1, str(e1)))
+ return False
+
+ try:
+ clusterfolder.manage_delObjects([objname])
+ except Exception, e:
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('DNF2: %s/%s: %r %s' \
+ % (path, objname, e, str(e)))
+ return False
+ return True
+
def set_node_flag(self, cluname, agent, batchid, task, desc):
path = str('%s%s' % (CLUSTER_FOLDER_PATH, cluname))
batch_id = str(batchid)
@@ -99,8 +131,8 @@
flag.manage_addProperty(TASKTYPE, task, 'string')
flag.manage_addProperty(FLAG_DESC, desc, 'string')
except Exception, e:
- errmsg = 'SNF0: error creating flag (%s,%s,%s) at %s: %s' \
- % (batch_id, task, desc, objpath, str(e))
+ errmsg = 'Error creating flag (bid: %s task: %s desc: %s) at %s: %s' \
+ % (batch_id, task, desc, objpath, str(e))
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('SNF0: %r %s' % (e, errmsg))
raise Exception, errmsg
--- conga/luci/cluster/busy_wait-macro 2007/11/19 18:22:48 1.1
+++ conga/luci/cluster/busy_wait-macro 2008/01/14 20:51:42 1.2
@@ -1,62 +1,70 @@
<div metal:define-macro="busywaitpage">
- <table>
- <tr><td>
- <h2>Please be patient - this cluster's configuration is being modified.</h2>
- </td></tr>
-
- <tr><td>
- <img src="100wait.gif" />
- </td></tr>
+ <h2>Please be patient - this cluster's configuration is being modified.</h2>
- <span tal:define="global nodereports isBusy/nodereports" />
+ <p><img src="100wait.gif" /></p>
+
+ <span tal:define="global nodereports isBusy/nodereports" />
+
+ <div tal:repeat="nodereport nodereports">
+ <tal:block
+ tal:condition="python:nodereport.get('isnodecreation') != True">
+
+ <h3><span tal:replace="nodereport/desc" /></h3>
+ </tal:block>
+
+ <tal:block
+ tal:condition="python:nodereport.get('isnodecreation') == True">
- <tr tal:repeat="nodereport nodereports"><td>
<tal:block
- tal:condition="python:nodereport.get('isnodecreation') != True">
+ tal:condition="python:nodereport.get('iserror') == True">
+
+ <h3><span tal:content="nodereport/desc" /></h3>
- <h2><span tal:replace="nodereport/desc" /></h2>
+ <span class="errmsg" tal:content="nodereport/errormessage" />
</tal:block>
- <tal:block
- tal:condition="python:nodereport.get('isnodecreation') == True">
+ <tal:block tal:condition="python:nodereport.get('iserror') != True">
+ <h3><span tal:content="nodereport/desc" /></h3>
+ <em tal:content="nodereport/statusmessage | nothing" />
+ <br/>
- <tal:block
- tal:condition="python:nodereport.get('iserror') == True">
+ <tal:block tal:condition="python: nodereport['statusindex'] < 1">
+ <img src="notstarted.png" />
+ </tal:block>
- <h2><span tal:content="nodereport/desc" /></h2>
+ <tal:block tal:condition="python: nodereport['statusindex'] == 1 or nodereport['statusindex'] == 2">
+ <img src="installed.png" alt="[cluster software installed]" />
+ </tal:block>
- <span class="errmsg"
- tal:content="nodereport/errormessage" />
+ <tal:block tal:condition="python: nodereport['statusindex'] == 3">
+ <img src="rebooted.png" alt="[cluster node rebooted]" />
</tal:block>
- <tal:block
- tal:condition="python:nodereport.get('iserror') != True">
+ <tal:block tal:condition="python: nodereport['statusindex'] == 4 or nodereport['statusindex'] == 5">
+ <img src="configured.png" alt="[cluster node configured]" />
+ </tal:block>
- <h2><span tal:content="nodereport/desc" /></h2>
- <em tal:content="nodereport/statusmessage | nothing" />
- <br/>
-
- <tal:block tal:condition="python: nodereport['statusindex'] < 1">
- <img src="notstarted.png" />
- </tal:block>
-
- <tal:block tal:condition="python: nodereport['statusindex'] == 1 or nodereport['statusindex'] == 2">
- <img src="installed.png" alt="[cluster software installed]" />
- </tal:block>
-
- <tal:block tal:condition="python: nodereport['statusindex'] == 3">
- <img src="rebooted.png" alt="[cluster node rebooted]" />
- </tal:block>
-
- <tal:block tal:condition="python: nodereport['statusindex'] == 4 or nodereport['statusindex'] == 5">
- <img src="configured.png" alt="[cluster node configured]" />
- </tal:block>
-
- <tal:block tal:condition="python: nodereport['statusindex'] == 6">
- <img src="joined.png" alt="[cluster node joined cluster]" />
- </tal:block>
+ <tal:block tal:condition="python: nodereport['statusindex'] == 6">
+ <img src="joined.png" alt="[cluster node joined cluster]" />
</tal:block>
</tal:block>
- </td></tr>
- </table>
+ </tal:block>
+
+ <div>
+ <form method="post" action=""
+ tal:attributes="name python:'stop_waiting_form%s' % nodereport.get('report_index')">
+
+ <input type="hidden" name="pagetype" value="61" />
+ <input type="hidden" name="clustername"
+ tal:attributes="value nodereport/clustername | nothing" />
+ <input type="hidden" name="node"
+ tal:attributes="value nodereport/node | nothing" />
+ <input type="hidden" name="refreshurl"
+ tal:attributes="value nodereport/refreshurl | request/URL |string:." />
+ <a href="javascript:void(0)"
+ tal:attributes="onclick python:'javascript:document.stop_waiting_form%s.submit()' % nodereport.get('report_index')">Stop waiting for this job to complete</a>
+ </form>
+ </div>
+ </div>
+ <hr/>
</div>
^ permalink raw reply [flat|nested] 21+ messages in thread* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2007-10-09 21:41 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2007-10-09 21:41 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Changes by: rmccabe at sourceware.org 2007-10-09 21:41:46
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: LuciClusterActions.py
Log message:
Fixed bz320411 (conga should use the node name in cluster.conf and not FQDN for fencing)
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&r1=1.87&r2=1.88
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterActions.py.diff?cvsroot=cluster&r1=1.7&r2=1.8
--- conga/conga.spec.in.in 2007/10/09 21:31:05 1.87
+++ conga/conga.spec.in.in 2007/10/09 21:41:46 1.88
@@ -297,6 +297,7 @@
- Fixed bz253879 (RFE: drop the link/details column in the resource section table)
- Fixed bz249619 (luci "Manage Systems and Clusters" display of clusters and storage systems is cascaded)
- Fixed bz315631 (conga doesn't handle the cluster restart operation properly)
+- Fixed bz320411 (conga should use the node name in cluster.conf and not FQDN for fencing)
* Mon Aug 27 2007 Ryan McCabe <rmccabe@redhat.com> 0.10.0-6
- Fixed bz253783
--- conga/luci/site/luci/Extensions/LuciClusterActions.py 2007/09/28 05:36:39 1.7
+++ conga/luci/site/luci/Extensions/LuciClusterActions.py 2007/10/09 21:41:46 1.8
@@ -613,10 +613,10 @@
if rc is None:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('FNF0: no ricci to fence %s for cluster %s' \
- % (nodename_resolved, clustername))
+ % (nodename, clustername))
return None
- batch_number, result = rq.nodeFence(rc, nodename_resolved)
+ batch_number, result = rq.nodeFence(rc, nodename)
if batch_number is None or result is None:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('FNF1: batch_number and/or result is None')
@@ -626,7 +626,7 @@
set_node_flag(self, clustername, rc.hostname(),
str(batch_number), NODE_FENCE,
'Node "%s" is being fenced by node "%s"' \
- % (nodename_resolved, rc.hostname()))
+ % (nodename, rc.hostname()))
except Exception, e:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('FNF2: failed to set flags: %r %s' \
^ permalink raw reply [flat|nested] 21+ messages in thread* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2007-10-09 21:33 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2007-10-09 21:33 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL4
Changes by: rmccabe at sourceware.org 2007-10-09 21:33:47
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: cluster_adapters.py
Log message:
Fix bz325501 (conga doesn't handle the cluster restart operation properly)
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.67.2.17&r2=1.67.2.18
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.24&r2=1.227.2.25
--- conga/conga.spec.in.in 2007/09/21 03:24:12 1.67.2.17
+++ conga/conga.spec.in.in 2007/10/09 21:33:47 1.67.2.18
@@ -331,9 +331,11 @@
- Fix bz253784
- Fix bz253901 (No node IDs generated on new RHEL4 / DLM cluster)
- Fix bz286951 (conga passes fence_scsi nodename, where as it accepts only node)
+- Fix bz325501 (conga doesn't handle the cluster restart operation properly)
- Related: bz241417
- Resolves: bz238727, bz241414, bz238656, bz245200, bz227723
- Resolves: bz253905, bz253906, bz253784, bz253901, bz286951
+- Resolves: bz325501
* Tue Apr 30 2007 Ryan McCabe <rmccabe@redhat.com> 0.9.1-9
- Fix bz238656 (conga does not set the "nodename" attribute for manual fencing)
--- conga/luci/site/luci/Extensions/cluster_adapters.py 2007/08/24 21:55:42 1.227.2.24
+++ conga/luci/site/luci/Extensions/cluster_adapters.py 2007/10/09 21:33:47 1.227.2.25
@@ -34,7 +34,7 @@
CLUSTER_ADD, CLUSTER_CONFIG, CLUSTER_DAEMON, CLUSTER_DELETE, \
CLUSTER_FOLDER_PATH, CLUSTER_RESTART, CLUSTER_START, CLUSTER_STOP, \
DISABLE_SVC_TASK, ENABLE_SVC_TASK, FDOM, FDOM_ADD, FENCEDEV, \
- FENCEDEV_NODE_CONFIG, FENCEDEVS, FLAG_DESC, INSTALL_TASK, \
+ FENCEDEV_NODE_CONFIG, FENCEDEVS, FLAG_DESC, INSTALL_TASK, CLUSTER_PROCESS, \
LAST_STATUS, LUCI_DEBUG_MODE, NODE, NODE_ADD, NODE_DELETE, \
NODE_FENCE, NODE_FORCE_DELETE, NODE_JOIN_CLUSTER, NODE_LEAVE_CLUSTER, \
NODE_REBOOT, NODES, POSSIBLE_REBOOT_MESSAGE, PRE_CFG, PRE_INSTALL, \
@@ -2327,14 +2327,16 @@
luci_log.debug('CTP0: no cluster task')
return 'No cluster task was given'
+ cluname = fvar['clustername']
if not model:
- cluname = fvar['clustername']
model = LuciExtractCluModel(self, request, cluname)
if model is None:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('CTP2: No cluster model for %s' \
% cluname)
return 'Unable to retrieve the cluster configuration for %s. The configuration XML may contain errors.' % cluname
+ elif cluname is None:
+ cluname = model.getClusterName()
redirect_page = NODES
if task == CLUSTER_STOP:
@@ -2344,8 +2346,11 @@
from LuciClusterActions import ClusterStart
ClusterStart(self, model)
elif task == CLUSTER_RESTART:
- from LuciClusterActions import ClusterRestart
- ClusterRestart(self, model)
+ from LuciClusterActions import ClusterStop
+ ClusterStop(self, model)
+ request.RESPONSE.redirect('%s?pagetype=%s&clustername=%s&task=%s&busyfirst=true' \
+ % (baseurl, CLUSTER_PROCESS, cluname, CLUSTER_START))
+ return
elif task == CLUSTER_DELETE:
from LuciClusterActions import ClusterDelete
ret = ClusterDelete(self, model)
^ permalink raw reply [flat|nested] 21+ messages in thread* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2007-10-09 21:31 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2007-10-09 21:31 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Changes by: rmccabe at sourceware.org 2007-10-09 21:31:05
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: cluster_adapters.py
Log message:
Fix 315631: conga doesn't handle the cluster restart operation properly
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&r1=1.86&r2=1.87
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.272&r2=1.273
--- conga/conga.spec.in.in 2007/10/09 20:57:35 1.86
+++ conga/conga.spec.in.in 2007/10/09 21:31:05 1.87
@@ -296,6 +296,7 @@
- Fixed bz253223 (When deleting a node from conga, the fence device isn't deleted)
- Fixed bz253879 (RFE: drop the link/details column in the resource section table)
- Fixed bz249619 (luci "Manage Systems and Clusters" display of clusters and storage systems is cascaded)
+- Fixed bz315631 (conga doesn't handle the cluster restart operation properly)
* Mon Aug 27 2007 Ryan McCabe <rmccabe@redhat.com> 0.10.0-6
- Fixed bz253783
--- conga/luci/site/luci/Extensions/cluster_adapters.py 2007/09/21 03:02:47 1.272
+++ conga/luci/site/luci/Extensions/cluster_adapters.py 2007/10/09 21:31:05 1.273
@@ -34,7 +34,7 @@
CLUSTER_ADD, CLUSTER_CONFIG, CLUSTER_DAEMON, CLUSTER_DELETE, \
CLUSTER_FOLDER_PATH, CLUSTER_RESTART, CLUSTER_START, CLUSTER_STOP, \
DISABLE_SVC_TASK, ENABLE_SVC_TASK, FDOM, FDOM_ADD, FENCEDEV, \
- FENCEDEV_NODE_CONFIG, FENCEDEVS, FLAG_DESC, INSTALL_TASK, \
+ FENCEDEV_NODE_CONFIG, FENCEDEVS, FLAG_DESC, INSTALL_TASK, CLUSTER_PROCESS, \
LAST_STATUS, LUCI_DEBUG_MODE, NODE, NODE_ADD, NODE_DELETE, \
NODE_FENCE, NODE_FORCE_DELETE, NODE_JOIN_CLUSTER, NODE_LEAVE_CLUSTER, \
NODE_REBOOT, NODES, POSSIBLE_REBOOT_MESSAGE, PRE_CFG, PRE_INSTALL, \
@@ -2308,14 +2308,16 @@
luci_log.debug('CTP0: no cluster task')
return 'No cluster task was given'
+ cluname = fvar['clustername']
if not model:
- cluname = fvar['clustername']
model = LuciExtractCluModel(self, request, cluname)
if model is None:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('CTP2: No cluster model for %s' \
% cluname)
return 'Unable to retrieve the cluster configuration for %s. The configuration XML may contain errors.' % cluname
+ elif cluname is None:
+ cluname = model.getClusterName()
redirect_page = NODES
if task == CLUSTER_STOP:
@@ -2325,8 +2327,11 @@
from LuciClusterActions import ClusterStart
ClusterStart(self, model)
elif task == CLUSTER_RESTART:
- from LuciClusterActions import ClusterRestart
- ClusterRestart(self, model)
+ from LuciClusterActions import ClusterStop
+ ClusterStop(self, model)
+ request.RESPONSE.redirect('%s?pagetype=%s&clustername=%s&task=%s&busyfirst=true' \
+ % (baseurl, CLUSTER_PROCESS, cluname, CLUSTER_START))
+ return
elif task == CLUSTER_DELETE:
from LuciClusterActions import ClusterDelete
ret = ClusterDelete(self, model)
^ permalink raw reply [flat|nested] 21+ messages in thread* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2007-10-03 2:16 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2007-10-03 2:16 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL5
Changes by: rmccabe at sourceware.org 2007-10-03 02:16:06
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: FenceHandler.py
make : version.in
Log message:
Fix regression of bz249097
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.60&r2=1.45.2.61
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/FenceHandler.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.4.2.9&r2=1.4.2.10
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/make/version.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.21.2.24&r2=1.21.2.25
--- conga/conga.spec.in.in 2007/08/27 18:42:17 1.45.2.60
+++ conga/conga.spec.in.in 2007/10/03 02:16:06 1.45.2.61
@@ -310,6 +310,9 @@
### changelog ###
%changelog
+* Tue Oct 02 2007 Ryan McCabe <rmccabe@redhat.com> 0.10.1-1
+* Fix regression of bz249097
+
* Mon Aug 27 2007 Ryan McCabe <rmccabe@redhat.com> 0.10.0-6
- Fixed bz253783
- Fixed bz253914 (conga doesn't allow you to reuse nfs export and nfs client resources)
--- conga/luci/site/luci/Extensions/FenceHandler.py 2007/08/01 19:53:34 1.4.2.9
+++ conga/luci/site/luci/Extensions/FenceHandler.py 2007/10/03 02:16:06 1.4.2.10
@@ -291,7 +291,11 @@
try:
pwd = form['passwd'].strip()
if not pwd:
- raise Exception, 'blank'
+ # Allow passwords that consist of only spaces.
+ if not form.has_key('passwd') or form['passwd'] == '':
+ raise Exception, 'blank'
+ else:
+ pwd = form['passwd']
fencedev.addAttribute('passwd', pwd)
has_passwd = True
except Exception, e:
@@ -340,7 +344,11 @@
try:
pwd = form['passwd'].strip()
if not pwd:
- raise Exception, 'blank'
+ # Allow passwords that consist of only spaces.
+ if not form.has_key('passwd') or form['passwd'] == '':
+ raise Exception, 'blank'
+ else:
+ pwd = form['passwd']
fencedev.addAttribute('passwd', pwd)
has_passwd = True
except Exception, e:
@@ -381,7 +389,11 @@
try:
pwd = form['passwd'].strip()
if not pwd:
- raise Exception, 'blank'
+ # Allow passwords that consist of only spaces.
+ if not form.has_key('passwd') or form['passwd'] == '':
+ raise Exception, 'blank'
+ else:
+ pwd = form['passwd']
fencedev.addAttribute('passwd', pwd)
has_passwd = True
except Exception, e:
@@ -430,7 +442,11 @@
try:
pwd = form['passwd'].strip()
if not pwd:
- raise Exception, 'blank'
+ # Allow passwords that consist of only spaces.
+ if not form.has_key('passwd') or form['passwd'] == '':
+ raise Exception, 'blank'
+ else:
+ pwd = form['passwd']
fencedev.addAttribute('passwd', pwd)
has_passwd = True
except Exception, e:
@@ -505,7 +521,11 @@
try:
pwd = form['passwd'].strip()
if not pwd:
- raise Exception, 'blank'
+ # Allow passwords that consist of only spaces.
+ if not form.has_key('passwd') or form['passwd'] == '':
+ raise Exception, 'blank'
+ else:
+ pwd = form['passwd']
fencedev.addAttribute('passwd', pwd)
has_passwd = True
except Exception, e:
@@ -554,7 +574,11 @@
try:
pwd = form['passwd'].strip()
if not pwd:
- raise Exception, 'blank'
+ # Allow passwords that consist of only spaces.
+ if not form.has_key('passwd') or form['passwd'] == '':
+ raise Exception, 'blank'
+ else:
+ pwd = form['passwd']
fencedev.addAttribute('passwd', pwd)
has_passwd = True
except Exception, e:
@@ -603,7 +627,11 @@
try:
pwd = form['passwd'].strip()
if not pwd:
- raise Exception, 'blank'
+ # Allow passwords that consist of only spaces.
+ if not form.has_key('passwd') or form['passwd'] == '':
+ raise Exception, 'blank'
+ else:
+ pwd = form['passwd']
fencedev.addAttribute('passwd', pwd)
has_passwd = True
except Exception, e:
@@ -657,7 +685,11 @@
try:
pwd = form['passwd'].strip()
if not pwd:
- raise Exception, 'blank'
+ # Allow passwords that consist of only spaces.
+ if not form.has_key('passwd') or form['passwd'] == '':
+ raise Exception, 'blank'
+ else:
+ pwd = form['passwd']
fencedev.addAttribute('passwd', pwd)
has_passwd = True
except Exception, e:
@@ -706,7 +738,11 @@
try:
pwd = form['passwd'].strip()
if not pwd:
- raise Exception, 'blank'
+ # Allow passwords that consist of only spaces.
+ if not form.has_key('passwd') or form['passwd'] == '':
+ raise Exception, 'blank'
+ else:
+ pwd = form['passwd']
fencedev.addAttribute('passwd', pwd)
has_passwd = True
except Exception, e:
@@ -776,12 +812,11 @@
try:
pwd = form['passwd'].strip()
if not pwd:
- if form['passwd']:
- # allow passwords consisting of nothing but whitespace
- fencedev.addAttribute('passwd', form['passwd'])
- else:
+ # Allow passwords that consist of only spaces.
+ if not form.has_key('passwd') or form['passwd'] == '':
raise Exception, 'blank'
-
+ else:
+ pwd = form['passwd']
fencedev.addAttribute('passwd', pwd)
has_passwd = True
except Exception, e:
@@ -852,7 +887,11 @@
try:
pwd = form['passwd'].strip()
if not pwd:
- raise Exception, 'blank'
+ # Allow passwords that consist of only spaces.
+ if not form.has_key('passwd') or form['passwd'] == '':
+ raise Exception, 'blank'
+ else:
+ pwd = form['passwd']
fencedev.addAttribute('passwd', pwd)
has_passwd = True
except Exception, e:
--- conga/make/version.in 2007/08/23 04:58:30 1.21.2.24
+++ conga/make/version.in 2007/10/03 02:16:06 1.21.2.25
@@ -1,5 +1,5 @@
-VERSION=0.10.0
-RELEASE=6
+VERSION=0.10.1
+RELEASE=1
# Remove "_UNRELEASED" at release time.
# Put release num at the beggining,
# so that after it gets released, it has
^ permalink raw reply [flat|nested] 21+ messages in thread* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2007-09-20 22:37 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2007-09-20 22:37 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Changes by: rmccabe at sourceware.org 2007-09-20 22:37:32
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: FenceHandler.py LuciClusterInfo.py
cluster_adapters.py
luci/site/luci/Extensions/ClusterModel: Device.py FenceDevice.py
ModelBuilder.py
Added files:
luci/site/luci/Extensions/ClusterModel: FenceDeviceAttr.py
Log message:
Fix bz253223 (When deleting a node from conga, the fence device isn't deleted)
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&r1=1.83&r2=1.84
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/FenceHandler.py.diff?cvsroot=cluster&r1=1.22&r2=1.23
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterInfo.py.diff?cvsroot=cluster&r1=1.13&r2=1.14
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.270&r2=1.271
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/FenceDeviceAttr.py.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/Device.py.diff?cvsroot=cluster&r1=1.4&r2=1.5
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/FenceDevice.py.diff?cvsroot=cluster&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py.diff?cvsroot=cluster&r1=1.9&r2=1.10
--- conga/conga.spec.in.in 2007/09/20 21:03:16 1.83
+++ conga/conga.spec.in.in 2007/09/20 22:37:32 1.84
@@ -293,6 +293,7 @@
- Fixed bz277661 (RFE: Better instructions on the luci login page if luci_admin not run.)
- Fixed bz277711 (RFE: luci_admin should check that luci is running before asking for the password)
- Fixed bz295771 (RFE: add ability to set self_fence attribute for clusterfs resources)
+- Fixed bz253223 (When deleting a node from conga, the fence device isn't deleted)
* Mon Aug 27 2007 Ryan McCabe <rmccabe@redhat.com> 0.10.0-6
- Fixed bz253783
--- conga/luci/site/luci/Extensions/FenceHandler.py 2007/08/08 21:26:37 1.22
+++ conga/luci/site/luci/Extensions/FenceHandler.py 2007/09/20 22:37:32 1.23
@@ -43,117 +43,6 @@
ILLEGAL_CHARS_REPLACED = 'Illegal characters were replaced by underscores. Feel free to set a new value.'
-# For every new fence added, there will be a fence instance and fence device
-# form needed. There will also be a populate and a validate method for each
-# form. The methods will need to be added to this file, and the four hash
-# tables (self.fi_populate, self.fi_validate, self.fd_populate,
-# self.fd_validate) must be updated. The methods will use fields in the
-# forms to set_text and to check.
-
-FENCE_OPTS = {
- 'fence_apc': 'APC Power Device',
- 'fence_wti': 'WTI Power Device',
- 'fence_brocade': 'Brocade Switch',
- 'fence_vixel': 'Vixel SAN Switch',
- 'fence_gnbd': 'Global Network Block Device',
- 'fence_sanbox2': 'QLogic SANBox2',
- 'fence_bladecenter': 'IBM Blade Center',
- 'fence_mcdata': 'McDATA SAN Switch',
- 'fence_egenera': 'Egenera SAN Controller',
- 'fence_bullpap': 'Bull PAP',
- 'fence_xvm': 'Virtual Machine Fencing',
- 'fence_scsi': 'SCSI Reservation',
- 'fence_ilo': 'HP ILO Device',
- 'fence_ipmilan': 'IPMI Lan',
- 'fence_drac': 'Dell DRAC',
- 'fence_rsa': 'IBM RSA II Device',
- 'fence_rps10': 'RPS10 Serial Switch',
- 'fence_manual': 'Manual Fencing'
-}
-
-FENCE_SHARED = {
- 'fence_apc': True,
- 'fence_wti': True,
- 'fence_brocade': True,
- 'fence_vixel': True,
- 'fence_gnbd': True,
- 'fence_sanbox2': True,
- 'fence_bladecenter': True,
- 'fence_mcdata': True,
- 'fence_egenera': True,
- 'fence_bullpap': True,
- 'fence_xvm': True,
- 'fence_scsi': True,
- 'fence_ilo': False,
- 'fence_ipmilan': False,
- 'fence_drac': False,
- 'fence_rsa': False,
- 'fence_rps10': False,
- 'fence_manual': False
-}
-
-PRETTY_NAME_ATTRS = {
- 'port': 'Port',
- 'blade': 'Blade',
- 'switch': 'Switch',
- 'ipaddr': 'IP Address',
- 'ipaddress': 'IP Address',
- 'nodename': 'Node Name',
- 'lpan': 'LPAN',
- 'lanplus': 'Lanplus',
- 'pserver': 'PServer',
- 'login': 'Login',
- 'passwd': 'Password',
- 'name': 'Name',
- 'server': 'Server',
- 'domain': 'Domain',
- 'hostname': 'Hostname',
- 'path': 'Path',
- 'cserver': 'CServer'
-}
-
-FENCE_FI_ATTRS = {
- 'fence_apc': ['port', 'switch'],
- 'fence_wti': ['port'],
- 'fence_brocade': ['port'],
- 'fence_vixel': ['port'],
- 'fence_gnbd': ['ipaddress'],
- 'fence_sanbox2': ['port'],
- 'fence_bladecenter': ['blade'],
- 'fence_mcdata': ['port'],
- 'fence_egenera': ['lpan', 'pserver'],
- 'fence_bullpap': ['domain'],
- 'fence_xvm': ['domain'],
- 'fence_scsi': ['nodename'],
- 'fence_ilo': [],
- 'fence_ipmilan': [],
- 'fence_drac': [],
- 'fence_rsa': [],
- 'fence_rps10': [],
- 'fence_manual': []
-}
-
-FENCE_FD_ATTRS = {
- 'fence_apc': ['name', 'ipaddr', 'login', 'passwd'],
- 'fence_wti': ['name', 'ipaddr', 'passwd'],
- 'fence_brocade': ['name', 'ipaddr', 'login', 'passwd'],
- 'fence_vixel': ['name', 'ipaddr', 'passwd'],
- 'fence_gnbd': ['name', 'servers'],
- 'fence_sanbox2': ['name', 'ipaddr', 'login', 'passwd'],
- 'fence_bladecenter': ['name', 'ipaddr', 'login', 'passwd'],
- 'fence_mcdata': ['name', 'ipaddr', 'login', 'passwd'],
- 'fence_egenera': ['name', 'cserver'],
- 'fence_bullpap': ['name', 'ipaddr', 'login', 'passwd'],
- 'fence_xvm': ['name'],
- 'fence_scsi': ['name'],
- 'fence_ilo': ['name', 'hostname', 'login', 'passwd'],
- 'fence_ipmilan': ['name', 'ipaddr', 'login', 'passwd', 'lanplus', 'auth'],
- 'fence_drac': ['name', 'ipaddr', 'login', 'passwd'],
- 'fence_rsa': ['name', 'hostname', 'login', 'passwd'],
- 'fence_rps10': ['name', 'device', 'port'],
- 'fence_manual': ['name']
-}
-
luci_log = get_logger()
def makeNCName(name):
--- conga/luci/site/luci/Extensions/LuciClusterInfo.py 2007/09/11 16:04:33 1.13
+++ conga/luci/site/luci/Extensions/LuciClusterInfo.py 2007/09/20 22:37:32 1.14
@@ -7,9 +7,9 @@
from Products.Archetypes.utils import make_uuid
from ClusterModel.ModelBuilder import ModelBuilder
+from ClusterModel.FenceDeviceAttr import FENCE_OPTS
import RicciQueries as rq
from ricci_communicator import RicciCommunicator
-from FenceHandler import FENCE_OPTS
from LuciSyslog import get_logger
from LuciDB import resolve_nodename
from LuciZope import GetReqVars
--- conga/luci/site/luci/Extensions/cluster_adapters.py 2007/09/11 16:04:33 1.270
+++ conga/luci/site/luci/Extensions/cluster_adapters.py 2007/09/20 22:37:32 1.271
@@ -1796,6 +1796,7 @@
if fencedev_name is None:
return (False, {'errors': ['No device name in form submission']})
+ # XXX - FIXME: use new model calls to do this.
fdev_to_delete = None
fdevs = model.getFenceDevices()
for fdev in fdevs:
/cvs/cluster/conga/luci/site/luci/Extensions/ClusterModel/FenceDeviceAttr.py,v --> standard output
revision 1.1
--- conga/luci/site/luci/Extensions/ClusterModel/FenceDeviceAttr.py
+++ - 2007-09-20 22:37:33.804688000 +0000
@@ -0,0 +1,130 @@
+# 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.
+
+FENCE_POWER_CONTROLLERS = [ 'fence_wti', 'fence_apc', 'fence_apc_snmp' ]
+
+FENCE_OPTS = {
+ 'fence_apc': 'APC Power Device',
+ 'fence_wti': 'WTI Power Device',
+ 'fence_brocade': 'Brocade Switch',
+ 'fence_vixel': 'Vixel SAN Switch',
+ 'fence_gnbd': 'Global Network Block Device',
+ 'fence_sanbox2': 'QLogic SANBox2',
+ 'fence_bladecenter': 'IBM Blade Center',
+ 'fence_mcdata': 'McDATA SAN Switch',
+ 'fence_egenera': 'Egenera SAN Controller',
+ 'fence_bullpap': 'Bull PAP',
+ 'fence_xvm': 'Virtual Machine Fencing',
+ 'fence_scsi': 'SCSI Reservation',
+ 'fence_ilo': 'HP iLO Device',
+ 'fence_ipmilan': 'IPMI Lan',
+ 'fence_drac': 'Dell DRAC',
+ 'fence_rsa': 'IBM RSA II Device',
+ 'fence_rps10': 'RPS10 Serial Switch',
+ 'fence_manual': 'Manual Fencing'
+}
+
+FENCE_SHARED = {
+ 'fence_apc': True,
+ 'fence_wti': True,
+ 'fence_brocade': True,
+ 'fence_vixel': True,
+ 'fence_gnbd': True,
+ 'fence_sanbox2': True,
+ 'fence_bladecenter': True,
+ 'fence_mcdata': True,
+ 'fence_egenera': True,
+ 'fence_bullpap': True,
+ 'fence_xvm': True,
+ 'fence_scsi': True,
+ 'fence_ilo': False,
+ 'fence_ipmilan': False,
+ 'fence_drac': False,
+ 'fence_rsa': False,
+ 'fence_rps10': False,
+ 'fence_manual': False
+}
+
+PRETTY_NAME_ATTRS = {
+ 'port': 'Port',
+ 'blade': 'Blade',
+ 'switch': 'Switch',
+ 'ipaddr': 'IP Address',
+ 'ipaddress': 'IP Address',
+ 'nodename': 'Node Name',
+ 'lpan': 'LPAN',
+ 'lanplus': 'Lanplus',
+ 'pserver': 'PServer',
+ 'login': 'Login',
+ 'passwd': 'Password',
+ 'name': 'Name',
+ 'server': 'Server',
+ 'domain': 'Domain',
+ 'hostname': 'Hostname',
+ 'path': 'Path',
+ 'cserver': 'CServer'
+}
+
+FENCE_FI_ATTRS = {
+ 'fence_apc': [ 'port', 'switch' ],
+ 'fence_wti': [ 'port' ],
+ 'fence_brocade': [ 'port' ],
+ 'fence_vixel': [ 'port' ],
+ 'fence_gnbd': [ 'ipaddress' ],
+ 'fence_sanbox2': [ 'port' ],
+ 'fence_bladecenter': [ 'blade' ],
+ 'fence_mcdata': [ 'port' ],
+ 'fence_egenera': [ 'lpan', 'pserver' ],
+ 'fence_bullpap': [ 'domain' ],
+ 'fence_xvm': [ 'domain' ],
+ 'fence_scsi': [ 'nodename' ],
+ 'fence_ilo': [ ],
+ 'fence_ipmilan': [ ],
+ 'fence_drac': [ ],
+ 'fence_rsa': [ ],
+ 'fence_rps10': [ ],
+ 'fence_manual': [ ]
+}
+
+FENCE_FD_ATTRS = {
+ 'fence_apc':
+ [ 'name', 'ipaddr', 'login', 'passwd' ],
+ 'fence_wti':
+ [ 'name', 'ipaddr', 'passwd' ],
+ 'fence_brocade':
+ [ 'name', 'ipaddr', 'login', 'passwd' ],
+ 'fence_vixel':
+ [ 'name', 'ipaddr', 'passwd' ],
+ 'fence_gnbd':
+ [ 'name', 'servers' ],
+ 'fence_sanbox2':
+ [ 'name', 'ipaddr', 'login', 'passwd' ],
+ 'fence_bladecenter':
+ [ 'name', 'ipaddr', 'login', 'passwd' ],
+ 'fence_mcdata':
+ [ 'name', 'ipaddr', 'login', 'passwd' ],
+ 'fence_egenera':
+ [ 'name', 'cserver' ],
+ 'fence_bullpap':
+ [ 'name', 'ipaddr', 'login', 'passwd' ],
+ 'fence_xvm':
+ [ 'name' ],
+ 'fence_scsi':
+ [ 'name' ],
+ 'fence_ilo':
+ [ 'name', 'hostname', 'login', 'passwd' ],
+ 'fence_ipmilan':
+ [ 'name', 'ipaddr', 'login', 'passwd', 'lanplus', 'auth' ],
+ 'fence_drac':
+ [ 'name', 'ipaddr', 'login', 'passwd' ],
+ 'fence_rsa':
+ [ 'name', 'hostname', 'login', 'passwd' ],
+ 'fence_rps10':
+ [ 'name', 'device', 'port' ],
+ 'fence_manual':
+ [ 'name' ]
+}
--- conga/luci/site/luci/Extensions/ClusterModel/Device.py 2007/08/08 21:00:08 1.4
+++ conga/luci/site/luci/Extensions/ClusterModel/Device.py 2007/09/20 22:37:32 1.5
@@ -5,25 +5,21 @@
# GNU General Public License as published by the
# Free Software Foundation.
-import FenceHandler
+import FenceDeviceAttr
from TagObject import TagObject
TAG_NAME = "device"
OPTION = "option"
-#New Power Controller Fence Agent names should be added to
-#the list below
-power_controller_list = [ "fence_wti", "fence_apc", "fence_apc_snmp" ]
-
class Device(TagObject):
def __init__(self):
TagObject.__init__(self)
self.TAG_NAME = TAG_NAME
self.agent_type = ""
self.has_native_option_set = False
- self.fi_attrs = FenceHandler.FENCE_FI_ATTRS
- self.pretty_fence_names = FenceHandler.FENCE_OPTS
- self.pretty_name_attrs = FenceHandler.PRETTY_NAME_ATTRS
+ self.fi_attrs = FenceDeviceAttr.FENCE_FI_ATTRS
+ self.pretty_fence_names = FenceDeviceAttr.FENCE_OPTS
+ self.pretty_name_attrs = FenceDeviceAttr.PRETTY_NAME_ATTRS
def getAgentType(self):
return self.agent_type
@@ -35,7 +31,7 @@
return self.has_native_option_set
def isPowerController(self):
- for item in power_controller_list:
+ for item in FenceDeviceAttr.FENCE_POWER_CONTROLLERS:
if self.agent_type == item:
return True
--- conga/luci/site/luci/Extensions/ClusterModel/FenceDevice.py 2007/06/25 16:03:39 1.2
+++ conga/luci/site/luci/Extensions/ClusterModel/FenceDevice.py 2007/09/20 22:37:32 1.3
@@ -5,7 +5,7 @@
# GNU General Public License as published by the
# Free Software Foundation.
-import FenceHandler
+import FenceDeviceAttr
from TagObject import TagObject
TAG_NAME = "fencedevice"
@@ -15,12 +15,10 @@
def __init__(self):
TagObject.__init__(self)
self.TAG_NAME = TAG_NAME
- self.fd_attrs = FenceHandler.FENCE_FD_ATTRS
- self.pretty_fence_names = FenceHandler.FENCE_OPTS
- self.pretty_name_attrs = FenceHandler.PRETTY_NAME_ATTRS
- self.shared_fences = FenceHandler.FENCE_SHARED
-
-
+ self.fd_attrs = FenceDeviceAttr.FENCE_FD_ATTRS
+ self.pretty_fence_names = FenceDeviceAttr.FENCE_OPTS
+ self.pretty_name_attrs = FenceDeviceAttr.PRETTY_NAME_ATTRS
+ self.shared_fences = FenceDeviceAttr.FENCE_SHARED
def getAgentType(self):
agent = self.attr_hash["agent"]
@@ -30,6 +28,9 @@
pass
return agent
+ def getPrettyName(self):
+ return self.pretty_fence_names[self.attr_hash['name']]
+
def isShared(self):
agent = self.getAgentType()
if agent == "fence_drac": #2 variants of drac...
--- conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py 2007/09/11 19:04:32 1.9
+++ conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py 2007/09/20 22:37:32 1.10
@@ -333,7 +333,14 @@
return obj_tree
-
+ def getFenceDeviceByName(self, name):
+ device = filter(lambda x: x.getName() == name, self.getFenceDevices())
+ if len(device) > 1:
+ raise Exception, '%d fence devices named %s exist' % (len(device), name)
+ if len(device) < 1:
+ return None
+ return device[0]
+
##Because fence devices are declared in a separate XML section
##in conf file, agent types for fence instances must be done in
##a separate pass, after the DOM is completely built. This method
@@ -527,12 +534,19 @@
self.isModified = True
def deleteNode(self, clusternode):
- #1) delete node
- #2) delete failoverdomainnodes with same name
- #3) delete lockserver nodes if GULM
+ #1) delete any non-shared fence devices used by this node
+ #2) delete node
+ #3) delete failoverdomainnodes with same name
+ #4) delete lockserver nodes if GULM
name = clusternode.getName()
+ for level in clusternode.getFenceLevels():
+ for fence in level.getChildren():
+ fdev = self.getFenceDeviceByName(fence.getName())
+ if fdev and not fdev.isShared():
+ self.deleteFenceDevice(fdev)
+
self.clusternodes_ptr.removeChild(clusternode)
found_one = True
@@ -607,6 +621,12 @@
self.cluster_ptr.removeChild(self.fence_xvmd_ptr)
self.fence_xvmd_ptr = None
+ def deleteFenceDevice(self, device):
+ if self.fencedevices_ptr is None or device is None:
+ return False
+ self.fencedevices_ptr.removeChild(device)
+ return True
+
def getFenceDevices(self):
if self.fencedevices_ptr is None:
return list()
^ permalink raw reply [flat|nested] 21+ messages in thread* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2007-08-17 20:26 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2007-08-17 20:26 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL5
Changes by: rmccabe at sourceware.org 2007-08-17 20:26:32
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: LuciClusterActions.py LuciDB.py
LuciZope.py
Log message:
Fixed bz249291 (delete node task fails to do all items listed in the help document)
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.55&r2=1.45.2.56
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterActions.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.3&r2=1.1.4.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciDB.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.4&r2=1.1.4.5
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciZope.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.3&r2=1.1.4.4
--- conga/conga.spec.in.in 2007/08/15 14:38:18 1.45.2.55
+++ conga/conga.spec.in.in 2007/08/17 20:26:31 1.45.2.56
@@ -310,6 +310,10 @@
### changelog ###
%changelog
+* Fri Aug 17 2007 Ryan McCabe <rmccabe@redhat.com> 0.10.0-5
+* Fixed bz249291 (delete node task fails to do all items listed in the help document)
+- Resolves: bz249291
+
* Mon Aug 13 2007 Ryan McCabe <rmccabe@redhat.com> 0.10.0-4
- Fixed bz230451 (fence_xvm.key file is not automatically created. Should have a least a default)
- Fixed bz249097 (allow a space as a valid password char)
--- conga/luci/site/luci/Extensions/LuciClusterActions.py 2007/07/26 04:20:59 1.1.4.3
+++ conga/luci/site/luci/Extensions/LuciClusterActions.py 2007/08/17 20:26:32 1.1.4.4
@@ -364,6 +364,10 @@
exclude_names=[ nodename_resolved ], exclude_busy=True)
if rc2 is None:
+ rc2 = getRicciAgent(self, clustername,
+ exclude_names=[ nodename_resolved ])
+
+ if rc2 is None:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('ND0: unable to find ricci agent to delete %s from %s' % (nodename_resolved, clustername))
return None
@@ -589,9 +593,11 @@
def NodeFence(self, clustername, nodename, nodename_resolved):
rc = getRicciAgent(self, clustername,
exclude_names=[ nodename_resolved, nodename ], exclude_busy=True)
+
if rc is None:
rc = getRicciAgent(self, clustername,
exclude_names=[ nodename_resolved, nodename ])
+
if rc is None:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('FNF0: no ricci to fence %s for cluster %s' \
@@ -636,6 +642,7 @@
if rc is None:
rc = getRicciAgent(self, clustername, exclude_busy=True)
+
if rc is None:
rc = getRicciAgent(self, clustername)
--- conga/luci/site/luci/Extensions/LuciDB.py 2007/07/26 04:20:59 1.1.4.4
+++ conga/luci/site/luci/Extensions/LuciDB.py 2007/08/17 20:26:32 1.1.4.5
@@ -852,7 +852,7 @@
continue
if exclude_busy is True:
- if NodeBusy(self, cluname, ricci_hostname, rc) is not False:
+ if NodeBusy(self, clustername, ricci_hostname, rc) is not False:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('GRA13: %s is busy, excluding' \
% ricci_hostname)
@@ -861,7 +861,7 @@
if LUCI_DEBUG_MODE is True:
luci_log.debug('GRA14: no ricci agent could be found for cluster %s' \
- % cluname)
+ % clustername)
return None
def getClusterDBObj(self, clustername):
--- conga/luci/site/luci/Extensions/LuciZope.py 2007/08/08 21:14:38 1.1.4.3
+++ conga/luci/site/luci/Extensions/LuciZope.py 2007/08/17 20:26:32 1.1.4.4
@@ -126,7 +126,7 @@
def GetReqVars(req, varlist):
ret = {}
- from types import ListType;
+ from types import ListType
for i in varlist:
pval = None
^ permalink raw reply [flat|nested] 21+ messages in thread* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2007-06-25 19:10 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2007-06-25 19:10 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL5
Changes by: rmccabe at sourceware.org 2007-06-25 19:10:55
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions/ClusterModel: ModelBuilder.py
ricci/modules/storage: FSController.cpp FSController.h Makefile
StorageModule.cpp
Added files:
ricci/test_suite/storage: get_fs_group_members.xml
Log message:
Add a call to retrieve the list of nodes with a gfs volume mounted
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.40&r2=1.45.2.41
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.1&r2=1.1.4.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/storage/FSController.cpp.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.7&r2=1.7.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/storage/FSController.h.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2&r2=1.2.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/storage/Makefile.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.12&r2=1.12.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/storage/StorageModule.cpp.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.5.2.1&r2=1.5.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/test_suite/storage/get_fs_group_members.xml.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=NONE&r2=1.1.2.1
--- conga/conga.spec.in.in 2007/06/25 16:17:27 1.45.2.40
+++ conga/conga.spec.in.in 2007/06/25 19:10:53 1.45.2.41
@@ -38,7 +38,7 @@
BuildRequires: python-devel >= 2.4.1
BuildRequires: glibc-devel gcc-c++ libxml2-devel sed
-#BuildRequires: pam-devel
+BuildRequires: cman-devel
BuildRequires: cyrus-sasl-devel >= 2.1
BuildRequires: openssl-devel dbus-devel pkgconfig file
--- conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py 2007/06/18 18:39:33 1.1.4.1
+++ conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py 2007/06/25 19:10:55 1.1.4.2
@@ -507,6 +507,9 @@
def getNodeNames(self):
return map(lambda x: x.getName(), self.clusternodes_ptr.getChildren())
+ def getNodeNameById(self, node_id):
+ return filter(lambda x: x.getAttribute('nodeid') == node_id, self.clusternodes_ptr.getChildren())[0].getName()
+
def addNode(self, clusternode):
self.clusternodes_ptr.addChild(clusternode)
if self.usesMulticast is True:
--- conga/ricci/modules/storage/FSController.cpp 2006/09/26 03:20:47 1.7
+++ conga/ricci/modules/storage/FSController.cpp 2007/06/25 19:10:55 1.7.2.1
@@ -1,5 +1,5 @@
/*
- Copyright Red Hat, Inc. 2005
+ Copyright Red Hat, Inc. 2005-2007
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
@@ -20,7 +20,6 @@
* Author: Stanko Kupcevic <kupcevic@redhat.com>
*/
-
#include "FSController.h"
#include "ExtendedFS.h"
#include "SwapFS.h"
@@ -28,10 +27,32 @@
#include "GFS2.h"
#include "UnsupportedFS.h"
#include "utils.h"
-
+#include <errno.h>
+#include <libgroup.h>
using namespace std;
+std::list<String>
+FSController::get_fs_group_ids(const String& name)
+{
+ list<String> members;
+ group_data_t fsgroup;
+
+ if (group_get_group(2, name.c_str(), &fsgroup) != 0)
+ throw String("error retrieving group members for " + name + ": " + strerror(errno));
+
+ if (!fsgroup.member)
+ throw String("the local node does not have " + name + " mounted");
+
+ for (int i = 0 ; i < fsgroup.member_count ; i++) {
+ char buf[8];
+ int ret = snprintf(buf, sizeof(buf), "%d", fsgroup.members[i]);
+ if (ret < 1 || (size_t) ret >= sizeof(buf))
+ throw String("invalid node id");
+ members.push_back(String(buf));
+ }
+ return members;
+}
counting_auto_ptr<Content>
FSController::get_fs(const String& path)
--- conga/ricci/modules/storage/FSController.h 2006/08/10 22:53:09 1.2
+++ conga/ricci/modules/storage/FSController.h 2007/06/25 19:10:55 1.2.2.1
@@ -33,7 +33,8 @@
class FSController
{
public:
-
+ std::list<String> get_fs_group_ids(const String& name);
+
counting_auto_ptr<Content> get_fs(const String& path);
std::list<counting_auto_ptr<ContentTemplate> > get_available_fss();
--- conga/ricci/modules/storage/Makefile 2006/09/26 03:17:41 1.12
+++ conga/ricci/modules/storage/Makefile 2007/06/25 19:10:55 1.12.2.1
@@ -56,7 +56,7 @@
INCLUDE +=
CXXFLAGS +=
-LDFLAGS += -lmagic
+LDFLAGS += -lgroup -lmagic
all: ${TARGET}
--- conga/ricci/modules/storage/StorageModule.cpp 2006/12/12 13:26:24 1.5.2.1
+++ conga/ricci/modules/storage/StorageModule.cpp 2007/06/25 19:10:55 1.5.2.2
@@ -25,6 +25,7 @@
#include "MapperFactory.h"
#include "BDFactory.h"
#include "LVM.h"
+#include "FSController.h"
using namespace std;
@@ -47,6 +48,7 @@
static VarMap get_bd(const VarMap& args);
static VarMap modify_bd(const VarMap& args);
static VarMap remove_bd(const VarMap& args);
+static VarMap get_fs_group_members(const VarMap& args);
static VarMap enable_clustered_lvm(const VarMap& args);
static VarMap disable_clustered_lvm(const VarMap& args);
@@ -83,6 +85,8 @@
api_1_0["get_bd"] = get_bd;
api_1_0["modify_bd"] = modify_bd;
api_1_0["remove_bd"] = remove_bd;
+
+ api_1_0["get_fs_group_members"] = get_fs_group_members;
api_1_0["enable_clustered_lvm"] = enable_clustered_lvm;
api_1_0["disable_clustered_lvm"] = disable_clustered_lvm;
@@ -416,8 +420,36 @@
return ret;
}
+VarMap
+get_fs_group_members(const VarMap& args)
+{
+ String fsname;
+ try {
+ VarMap::const_iterator iter = args.find("fsname");
+ if (iter == args.end())
+ throw APIerror("missing fsname variable");
+ fsname = iter->second.get_string();
+ if (fsname == "")
+ throw APIerror("missing fsname value");
+ } catch ( String e ) {
+ throw APIerror(e);
+ }
+ list<XMLObject> ids_list;
+ list<String> group_ids = FSController().get_fs_group_ids(fsname);
+
+ for (list<String>::iterator iter = group_ids.begin() ; iter != group_ids.end() ; iter++)
+ {
+ XMLObject id_xml("group_member");
+ id_xml.set_attr("nodeid", String(*iter));
+ ids_list.push_back(id_xml);
+ }
+ Variable var("group_member_list", ids_list);
+ VarMap ret;
+ ret.insert(pair<String, Variable>(var.name(), var));
+ return ret;
+}
list<XMLObject>
^ permalink raw reply [flat|nested] 21+ messages in thread* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2007-05-02 2:39 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2007-05-02 2:39 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL4
Changes by: rmccabe at sourceware.org 2007-05-02 02:39:53
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: FenceHandler.py cluster_adapters.py
Log message:
Fix 238656: conga does not set the "nodename" attribute for manual fencing
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.67.2.10&r2=1.67.2.11
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/FenceHandler.py.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.17.2.1&r2=1.17.2.2
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.18&r2=1.227.2.19
--- conga/conga.spec.in.in 2007/05/01 15:57:33 1.67.2.10
+++ conga/conga.spec.in.in 2007/05/02 02:39:53 1.67.2.11
@@ -288,6 +288,9 @@
%changelog
+* Tue Apr 30 2007 Ryan McCabe <rmccabe@redhat.com> 0.9.1-9
+- Fix bz238656 (conga does not set the "nodename" attribute for manual fencing)
+
* Tue Apr 30 2007 Ryan McCabe <rmccabe@redhat.com> 0.9.1-8
- Do not build for ppc64
- Resolves: bz236827
--- conga/luci/site/luci/Extensions/FenceHandler.py 2007/02/12 23:28:16 1.17.2.1
+++ conga/luci/site/luci/Extensions/FenceHandler.py 2007/05/02 02:39:53 1.17.2.2
@@ -29,7 +29,7 @@
FI_PROVIDE_IPADDRESS = 'An IP address must be provided for this Fence'
FI_PROVIDE_ELPAN = 'A LPAN value must be provided for this Egenera Fence'
FI_PROVIDE_EPSERVER = 'A PServer value must be provided for this Egenera Fence'
-FI_PROVIDE_NODENAME = 'A Node Name value must be provided for this SCSI Fence'
+FI_PROVIDE_NODENAME = 'A Node Name value must be provided for this Fence'
ILLEGAL_CHARS_REPLACED = 'Illegal characters were replaced by underscores. Feel free to set a new value.'
@@ -120,7 +120,7 @@
'fence_drac': [],
'fence_rsa': [],
'fence_rps10': [],
- 'fence_manual': []
+ 'fence_manual': ['nodename']
}
FENCE_FD_ATTRS = {
@@ -1094,6 +1094,19 @@
fenceinst.addAttribute('nodename', nodename)
return errors
+def val_manual_fi(form, fenceinst):
+ errors = list()
+
+ try:
+ nodename = form['nodename'].strip()
+ if not nodename:
+ raise Exception, 'blank'
+ except Exception, e:
+ errors.append(FI_PROVIDE_NODENAME)
+
+ fenceinst.addAttribute('nodename', nodename)
+ return errors
+
def val_noop_fi(dummy, _dummy):
return []
@@ -1110,12 +1123,12 @@
'fence_bullpap': val_bullpap_fi,
'fence_xvm': val_xvm_fi,
'fence_scsi': val_scsi_fi,
+ 'fence_manual': val_manual_fi,
'fence_ilo': val_noop_fi,
'fence_ipmilan': val_noop_fi,
'fence_drac': val_noop_fi,
'fence_rsa': val_noop_fi,
- 'fence_rps10': val_noop_fi,
- 'fence_manual': val_noop_fi
+ 'fence_rps10': val_noop_fi
}
def validate_fenceinstance(form, parent_name, fence_agent):
--- conga/luci/site/luci/Extensions/cluster_adapters.py 2007/03/16 03:19:00 1.227.2.18
+++ conga/luci/site/luci/Extensions/cluster_adapters.py 2007/05/02 02:39:53 1.227.2.19
@@ -1877,7 +1877,10 @@
# Add back the tags under the method block
# for the fence instance
- instance_list.append({'name': fencedev_name })
+ if fence_type == 'fence_manual':
+ instance_list.append({'name': fencedev_name, 'nodename': nodename })
+ else:
+ instance_list.append({'name': fencedev_name })
else:
# The user created a new fence device.
retcode, retmsg = validateNewFenceDevice(fence_form, model)
@@ -1891,7 +1894,10 @@
# so the appropriate XML goes into the <method> block inside
# <node><fence>. All we need for that is the device name.
if not 'sharable' in fence_form:
- instance_list.append({'name': fencedev_name })
+ if fence_type == 'fence_manual':
+ instance_list.append({'name': fencedev_name, 'nodename': nodename })
+ else:
+ instance_list.append({'name': fencedev_name })
if fencedev_unknown is True:
# Save any instances for this fence device.
^ permalink raw reply [flat|nested] 21+ messages in thread* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2007-05-02 2:36 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2007-05-02 2:36 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL5
Changes by: rmccabe at sourceware.org 2007-05-02 02:36:06
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: FenceHandler.py cluster_adapters.py
Log message:
Fix 238655: conga does not set the "nodename" attribute for manual fencing
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.35&r2=1.45.2.36
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/FenceHandler.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.4.2.4&r2=1.4.2.5
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.120.2.28&r2=1.120.2.29
--- conga/conga.spec.in.in 2007/04/30 18:47:32 1.45.2.35
+++ conga/conga.spec.in.in 2007/05/02 02:36:06 1.45.2.36
@@ -281,12 +281,11 @@
%changelog
-
* Mon Apr 30 2007 Ryan McCabe <rmccabe@redhat.com> 0.9.2-7
-
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX UPDATE NOT RELEASED YET XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+- Fixed bz238655 (conga does not set the "nodename" attribute for manual fencing)
* Wed Apr 11 2007 Ryan McCabe <rmccabe@redhat.com> 0.9.2-5
- Fixed bz225206 (Cluster cannot be deleted (from 'Manage Systems') - but no error results)
--- conga/luci/site/luci/Extensions/FenceHandler.py 2007/03/01 00:31:08 1.4.2.4
+++ conga/luci/site/luci/Extensions/FenceHandler.py 2007/05/02 02:36:06 1.4.2.5
@@ -29,7 +29,7 @@
FI_PROVIDE_IPADDRESS = 'An IP address must be provided for this Fence'
FI_PROVIDE_ELPAN = 'A LPAN value must be provided for this Egenera Fence'
FI_PROVIDE_EPSERVER = 'A PServer value must be provided for this Egenera Fence'
-FI_PROVIDE_NODENAME = 'A Node Name value must be provided for this SCSI Fence'
+FI_PROVIDE_NODENAME = 'A Node Name value must be provided for this Fence'
ILLEGAL_CHARS_REPLACED = 'Illegal characters were replaced by underscores. Feel free to set a new value.'
@@ -120,7 +120,7 @@
'fence_drac': [],
'fence_rsa': [],
'fence_rps10': [],
- 'fence_manual': []
+ 'fence_manual': ['nodename']
}
FENCE_FD_ATTRS = {
@@ -1094,6 +1094,19 @@
fenceinst.addAttribute('nodename', nodename)
return errors
+def val_manual_fi(form, fenceinst):
+ errors = list()
+
+ try:
+ nodename = form['nodename'].strip()
+ if not nodename:
+ raise Exception, 'blank'
+ except Exception, e:
+ errors.append(FI_PROVIDE_NODENAME)
+
+ fenceinst.addAttribute('nodename', nodename)
+ return errors
+
def val_noop_fi(dummy, _dummy):
return []
@@ -1110,12 +1123,12 @@
'fence_bullpap': val_bullpap_fi,
'fence_xvm': val_xvm_fi,
'fence_scsi': val_scsi_fi,
+ 'fence_manual': val_manual_fi,
'fence_ilo': val_noop_fi,
'fence_ipmilan': val_noop_fi,
'fence_drac': val_noop_fi,
'fence_rsa': val_noop_fi,
- 'fence_rps10': val_noop_fi,
- 'fence_manual': val_noop_fi
+ 'fence_rps10': val_noop_fi
}
def validate_fenceinstance(form, parent_name, fence_agent):
--- conga/luci/site/luci/Extensions/cluster_adapters.py 2007/03/16 03:19:22 1.120.2.28
+++ conga/luci/site/luci/Extensions/cluster_adapters.py 2007/05/02 02:36:06 1.120.2.29
@@ -1877,7 +1877,10 @@
# Add back the tags under the method block
# for the fence instance
- instance_list.append({'name': fencedev_name })
+ if fence_type == 'fence_manual':
+ instance_list.append({'name': fencedev_name, 'nodename': nodename })
+ else:
+ instance_list.append({'name': fencedev_name })
else:
# The user created a new fence device.
retcode, retmsg = validateNewFenceDevice(fence_form, model)
@@ -1891,7 +1894,10 @@
# so the appropriate XML goes into the <method> block inside
# <node><fence>. All we need for that is the device name.
if not 'sharable' in fence_form:
- instance_list.append({'name': fencedev_name })
+ if fence_type == 'fence_manual':
+ instance_list.append({'name': fencedev_name, 'nodename': nodename })
+ else:
+ instance_list.append({'name': fencedev_name })
if fencedev_unknown is True:
# Save any instances for this fence device.
^ permalink raw reply [flat|nested] 21+ messages in thread* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2006-12-14 0:01 rmccabe
0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2006-12-14 0:01 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL5
Changes by: rmccabe at sourceware.org 2006-12-14 00:01:01
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: ricci_bridge.py
Log message:
fix for bz219522
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.15&r2=1.45.2.16
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ricci_bridge.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.30.2.13&r2=1.30.2.14
--- conga/conga.spec.in.in 2006/12/13 20:27:40 1.45.2.15
+++ conga/conga.spec.in.in 2006/12/14 00:01:00 1.45.2.16
@@ -291,8 +291,7 @@
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- Fixed bz214989 (Package download not working for Conga during cluster creation)
--
-
+- Fixed bz219522 (Restarting a cluster via luci web gui = UnboundLocalError - local variable 'e' referenced before assignment)
* Tue Dec 12 2006 Stanko Kupcevic <kupcevic@redhat.com> 0.8-26
- luci storage: fix bytes->TB conversion
--- conga/luci/site/luci/Extensions/ricci_bridge.py 2006/12/12 13:26:23 1.30.2.13
+++ conga/luci/site/luci/Extensions/ricci_bridge.py 2006/12/14 00:01:00 1.30.2.14
@@ -38,8 +38,7 @@
return (True, 'completed sucessfully')
# Error
- luci_log.debug_verbose('checkBatch2: %s: %s: %s' \
- % (str(code), rc.hostname(), str(e)))
+ luci_log.debug_verbose('checkBatch2: %s: %s' % (str(code), rc.hostname()))
return (-1, err_msg)
def addClusterNodeBatch(os_str,
^ permalink raw reply [flat|nested] 21+ messages in thread* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2006-11-29 22:33 kupcevic
0 siblings, 0 replies; 21+ messages in thread
From: kupcevic @ 2006-11-29 22:33 UTC (permalink / raw)
To: cluster-devel.redhat.com
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL5
Changes by: kupcevic at sourceware.org 2006-11-29 22:33:51
Modified files:
. : conga.spec.in.in
luci/site/luci/Extensions: HelperFunctions.py
Log message:
luci storage: fix bytes->TB conversion
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.7&r2=1.45.2.8
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/HelperFunctions.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.4&r2=1.4.2.1
--- conga/conga.spec.in.in 2006/11/17 20:46:02 1.45.2.7
+++ conga/conga.spec.in.in 2006/11/29 22:33:50 1.45.2.8
@@ -289,7 +289,7 @@
XXXXXXXXXXXXXXXXXXX UPDATE NOT RELEASED YET XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
--
+- luci storage: fix bytes->TB conversion
--- conga/luci/site/luci/Extensions/HelperFunctions.py 2006/10/06 22:08:13 1.4
+++ conga/luci/site/luci/Extensions/HelperFunctions.py 2006/11/29 22:33:50 1.4.2.1
@@ -133,6 +133,6 @@
def convert_bytes(bytes, units):
c = int(bytes) / get_units_multiplier(units)
- c = str(c)
+ c = repr(c)
c = c[:c.find('.') + 3]
return c
^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2008-09-17 6:29 UTC | newest]
Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-15 18:20 [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens rmccabe
-- strict thread matches above, loose matches on Subject: below --
2008-09-17 6:29 rmccabe
2008-07-14 16:29 rmccabe
2008-05-12 17:09 rmccabe
2008-05-12 17:04 rmccabe
2008-04-28 3:54 rmccabe
2008-04-28 3:49 rmccabe
2008-04-18 20:34 rmccabe
2008-04-14 15:58 rmccabe
2008-01-14 20:51 rmccabe
2007-10-09 21:41 rmccabe
2007-10-09 21:33 rmccabe
2007-10-09 21:31 rmccabe
2007-10-03 2:16 rmccabe
2007-09-20 22:37 rmccabe
2007-08-17 20:26 rmccabe
2007-06-25 19:10 rmccabe
2007-05-02 2:39 rmccabe
2007-05-02 2:36 rmccabe
2006-12-14 0:01 rmccabe
2006-11-29 22:33 kupcevic
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).