commit 1b7b04ba83c1b4b382a6414211c3e4acb9c54773
Author: Ryan McCabe <rmccabe(a)redhat.com>
Date: Sat Oct 23 02:03:00 2010 -0400
Add deleters to the methods of classes that manipulate element attributes
luci/lib/ClusterConf/Altname.py | 9 +++
luci/lib/ClusterConf/BaseResource.py | 25 ++++++++-
luci/lib/ClusterConf/ClusterNode.py | 11 +++-
luci/lib/ClusterConf/Clusterfs.py | 2 +-
luci/lib/ClusterConf/Clvmd.py | 3 +
luci/lib/ClusterConf/Cman.py | 54 ++++++++++++++++--
luci/lib/ClusterConf/DLM.py | 39 +++++++++++++
luci/lib/ClusterConf/FailoverDomain.py | 11 ++++-
luci/lib/ClusterConf/FailoverDomainNode.py | 5 ++-
luci/lib/ClusterConf/FenceDaemon.py | 26 ++++++++--
luci/lib/ClusterConf/FenceXVMd.py | 29 ++++++++++-
luci/lib/ClusterConf/GFSControld.py | 24 ++++++++
luci/lib/ClusterConf/Group.py | 3 +
luci/lib/ClusterConf/Interface.py | 17 ++++++-
luci/lib/ClusterConf/Lockspace.py | 7 ++-
luci/lib/ClusterConf/Logging.py | 27 ++++++++-
luci/lib/ClusterConf/Master.py | 4 ++
luci/lib/ClusterConf/Multicast.py | 3 +
luci/lib/ClusterConf/NFSClient.py | 3 +-
luci/lib/ClusterConf/QuorumD.py | 60 ++++++++++++++++++++
luci/lib/ClusterConf/Rm.py | 15 +++++-
luci/lib/ClusterConf/Service.py | 67 +++++++++++------------
luci/lib/ClusterConf/TagObject.py | 17 ++++--
luci/lib/ClusterConf/Totem.py | 24 ++++++++
luci/widget_validators/validate_cluster_prop.py | 2 +-
25 files changed, 419 insertions(+), 68 deletions(-)
---
diff --git a/luci/lib/ClusterConf/Altname.py b/luci/lib/ClusterConf/Altname.py
index 48bb221..e0be390 100644
--- a/luci/lib/ClusterConf/Altname.py
+++ b/luci/lib/ClusterConf/Altname.py
@@ -20,14 +20,23 @@ class Altname(TagObject):
def setAddr(self, val):
return self.addAttribute('name', val)
+ def delAddr(self):
+ return self.attr_hash.get('name')
+
def getPort(self):
return self.getAttribute('port')
def setPort(self, val):
return self.addIntegerAttribute('port', val, (1, 0xffff))
+ def delPort(self):
+ return self.removeAttribute('port')
+
def getMcast(self):
return self.getAttribute('mcast')
def setMcast(self, val):
return self.addAttribute('mcast', val)
+
+ def delMcast(self):
+ return self.removeAttribute('mcast')
diff --git a/luci/lib/ClusterConf/BaseResource.py b/luci/lib/ClusterConf/BaseResource.py
index 035631c..a3c990c 100644
--- a/luci/lib/ClusterConf/BaseResource.py
+++ b/luci/lib/ClusterConf/BaseResource.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2009 Red Hat, Inc.
+# Copyright (C) 2006-2010 Red Hat, Inc.
#
# This program is free software; you can redistribute
# it and/or modify it under the terms of version 2 of the
@@ -19,9 +19,11 @@ class BaseResource(TagObject):
def ref(self):
self.refcount += 1
+ return self.refcount
def unref(self):
self.refcount -= 1
+ return self.refcount
def getRefcount(self):
return self.refcount
@@ -44,6 +46,9 @@ class BaseResource(TagObject):
def setIndependentSubtree(self, val):
return self.addBinaryAttribute('__independent_subtree', val, (None,
'1'))
+ def delIndependentSubtree(self):
+ return self.removeAttribute('__independent_subtree')
+
def getNonCriticalResource(self):
try:
ret = int(self.getAttribute('__independent_subtree'))
@@ -56,24 +61,36 @@ class BaseResource(TagObject):
def setNonCriticalResource(self, val):
return self.addBinaryAttribute('__independent_subtree', val, (None,
'2'))
+ def delNonCriticalResource(self):
+ return self.removeAttribute('__independent_subtree')
+
def getEnforceTimeouts(self):
return self.getBinaryAttribute('__enforce_timeouts')
def setEnforceTimeouts(self, val):
return self.addBinaryAttribute('__enforce_timeouts', val (None,
'1'))
+ def delEnforceTimeouts(self):
+ return self.removeAttribute('__enforce_timeouts')
+
def getMaxFailures(self):
return self.getAttribute('__max_failures')
def setMaxFailures(self, val):
return self.addIntegerAttribute('__max_failures', val, (0, None))
+ def delMaxFailures(self):
+ return self.removeAttribute('__max_failures')
+
def getFailureExpireTime(self):
return self.getAttribute('__failure_expire_time')
def setFailureExpireTime(self, val):
return self.addIntegerAttribute('__failure_expire_time', val, (0, None))
+ def delFailureExpireTime(self):
+ return self.removeAttribute('__failure_expire_time')
+
def getMaxRestarts(self):
return self.getAttribute('__max_restarts')
@@ -83,5 +100,11 @@ class BaseResource(TagObject):
def getRestartExpireTime(self):
return self.getAttribute('__restart_expire_time')
+ def delMaxRestarts(self):
+ return self.removeAttribute('__max_restarts')
+
def setRestartExpireTime(self, val):
return self.addIntegerAttribute('__restart_expire_time', val, (0, None))
+
+ def delRestartExpireTime(self):
+ return self.removeAttribute('__restart_expire_time')
diff --git a/luci/lib/ClusterConf/ClusterNode.py b/luci/lib/ClusterConf/ClusterNode.py
index 9eb1665..7949373 100644
--- a/luci/lib/ClusterConf/ClusterNode.py
+++ b/luci/lib/ClusterConf/ClusterNode.py
@@ -40,6 +40,9 @@ class ClusterNode(TagObject):
def setVotes(self, val):
return self.addIntegerAttribute('votes', val, (1, None))
+ def delVotes(self):
+ return self.removeAttribute('votes')
+
def getNodeID(self):
return self.getAttribute('nodeid')
@@ -48,11 +51,15 @@ class ClusterNode(TagObject):
# Cluster2/RHEL5 only
def getIfname(self):
- self.getAttribute('ifname')
+ return self.getAttribute('ifname')
# Cluster2/RHEL5 only
def setIfname(self, val):
- self.addAttribute('ifname', val)
+ return self.addAttribute('ifname', val)
+
+ # Cluster2/RHEL5 only
+ def delIfname(self):
+ return self.removeAttribute('ifname')
def removeFenceInstance(self, method, instance):
"""Remove fence instance from this node and given fence
method."""
diff --git a/luci/lib/ClusterConf/Clusterfs.py b/luci/lib/ClusterConf/Clusterfs.py
index f3b00ad..d4e6528 100644
--- a/luci/lib/ClusterConf/Clusterfs.py
+++ b/luci/lib/ClusterConf/Clusterfs.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2009 Red Hat, Inc.
+# Copyright (C) 2006-2010 Red Hat, Inc.
#
# This program is free software; you can redistribute
# it and/or modify it under the terms of version 2 of the
diff --git a/luci/lib/ClusterConf/Clvmd.py b/luci/lib/ClusterConf/Clvmd.py
index 0c6552c..6823815 100644
--- a/luci/lib/ClusterConf/Clvmd.py
+++ b/luci/lib/ClusterConf/Clvmd.py
@@ -19,3 +19,6 @@ class Clvmd(TagObject):
def setInterface(self, val):
return self.addAttribute('interface', val)
+
+ def delInterface(self):
+ return self.removeAttribute('interface')
diff --git a/luci/lib/ClusterConf/Cman.py b/luci/lib/ClusterConf/Cman.py
index 2d5062a..00e9740 100644
--- a/luci/lib/ClusterConf/Cman.py
+++ b/luci/lib/ClusterConf/Cman.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2009 Red Hat, Inc.
+# Copyright (C) 2006-2010 Red Hat, Inc.
#
# This program is free software; you can redistribute
# it and/or modify it under the terms of version 2 of the
@@ -21,59 +21,89 @@ class Cman(TagObject):
def getBroadcast(self):
return self.getBinaryAttribute('broadcast')
+ def delBroadcast(self):
+ return self.removeAttribute('broadcast')
+
def getTwoNode(self):
return self.getBinaryAttribute('two_node')
def setTwoNode(self, val):
return self.addBinaryAttribute('two_node', val, (None, '1'))
+ def delTwoNode(self):
+ return self.removeAttribute('two_node')
+
def getExpectedVotes(self):
return self.getAttribute('expected_votes')
def setExpectedVotes(self, val):
return self.addIntegerAttribute('expected_votes', val, (1, None))
+ def delExpectedVotes(self):
+ return self.removeAttribute('expected_votes')
+
def getUpgrading(self):
- return self.getAttribute('upgrading')
+ return self.getBinaryAttribute('upgrading')
def setUpgrading(self, val):
return self.addBinaryAttribute('upgrading', val, (None, '1'))
+ def delUpgrading(self):
+ return self.removeAttribute('upgrading')
+
def getDisallowed(self):
- return self.getAttribute('disallowed')
+ return self.getBinaryAttribute('disallowed')
def setDisallowed(self, val):
return self.addBinaryAttribute('disallowed', val, (None, '1'))
+ def delDisallowed(self):
+ return self.removeAttribute('disallowed')
+
def getQuorumDevPoll(self):
return self.getAttribute('quorum_dev_poll')
def setQuorumDevPoll(self, val):
return self.addIntegerAttribute('quorum_dev_poll', val, (0, None))
+ def delQuorumDevPoll(self):
+ return self.removeAttribute('quorum_dev_poll')
+
def getShutdownTimeout(self):
return self.getAttribute('shutdown_timeout')
def setShutdownTimeout(self, val):
return self.addIntegerAttribute('shutdown_timeout', val, (0, None))
+ def delShutdownTimeout(self):
+ return self.removeAttribute('shutdown_timeout')
+
def getCcsdPoll(self):
return self.getAttribute('ccsd_poll')
def setCcsdPoll(self, val):
return self.addIntegerAttribute('ccsd_poll', val, (0, None))
+ def delCcsdPoll(self):
+ return self.removeAttribute('ccsd_poll')
+
def getDebugMask(self):
return self.getAttribute('debug_mask')
def setDebugMask(self, val):
return self.addIntegerAttribute('debug_mask', val)
+ def delDebugMask(self):
+ return self.removeAttribute('debug_mask')
+
def getPort(self):
return self.getAttribute('port')
def setPort(self, val):
- return self.addIntegerAttribute('port', val, (0, None))
+ return self.addIntegerAttribute('port', val, (1, 0xffff))
+
+ def delPort(self):
+ return self.removeAttribute('port')
def getClusterId(self):
return self.getAttribute('cluster_id')
@@ -81,20 +111,32 @@ class Cman(TagObject):
def setClusterId(self, val):
return self.addIntegerAttribute('cluster_id', val, (0, None))
+ def delClusterId(self):
+ return self.removeAttribute('cluster_id')
+
def getHashClusterId(self):
- return self.getAttribute('hash_cluster_id')
+ return self.getBinaryAttribute('hash_cluster_id')
def setHashClusterId(self, val):
return self.addBinaryAttribute('hash_cluster_id', val, (None, '1'))
+ def delHashClusterId(self):
+ return self.removeAttribute('hash_cluster_id')
+
def getKeyFile(self):
return self.getAttribute('keyfile')
def setKeyFile(self, val):
return self.addAttribute('keyfile', val)
+ def delKeyFile(self):
+ return self.removeAttribute('keyfile')
+
def getDisableOpenAIS(self):
- return self.getAttribute('disable_openais')
+ return self.getBinaryAttribute('disable_openais')
def setDisableOpenAIS(self, val):
return self.addBinaryAttribute('disable_openais', val, (None, '1'))
+
+ def delDisableOpenAIS(self):
+ return self.removeAttribute('disable_openais')
diff --git a/luci/lib/ClusterConf/DLM.py b/luci/lib/ClusterConf/DLM.py
index 772d118..b4d64d3 100644
--- a/luci/lib/ClusterConf/DLM.py
+++ b/luci/lib/ClusterConf/DLM.py
@@ -37,21 +37,33 @@ class DLM(TagObject):
def setLogDebug(self, val):
return self.addBinaryAttribute('log_debug', val, ('0', '1'))
+ def delLogDebug(self):
+ return self.removeAttribute('log_debug')
+
def getEnableFencing(self):
return self.getBinaryAttribute('enable_fencing')
def setEnableFencing(self, val):
return self.addBinaryAttribute('enable_fencing', val, ('0',
'1'))
+ def delEnableFencing(self):
+ return self.removeAttribute('enable_fencing')
+
def getEnableQuorum(self):
return self.getBinaryAttribute('enable_quorum')
def setEnableQuorum(self, val):
return self.addBinaryAttribute('enable_quorum', val, ('0',
'1'))
+ def delEnableQuorum(self):
+ return self.removeAttribute('enable_quorum')
+
def getEnableDeadlk(self):
return self.getBinaryAttribute('enable_deadlk')
+ def delEnableDeadlk(self):
+ return self.removeAttribute('enable_deadlk')
+
def setEnableDeadlk(self, val):
return self.addBinaryAttribute('enable_deadlk', val, ('0',
'1'))
@@ -61,50 +73,77 @@ class DLM(TagObject):
def setEnablePlock(self, val):
return self.addBinaryAttribute('enable_plock', val, ('0',
'1'))
+ def delEnablePlock(self):
+ return self.removeAttribute('enable_plock')
+
def getEnablePlockDebug(self):
return self.getBinaryAttribute('enable_plock_debug')
def setEnablePlockDebug(self, val):
return self.addBinaryAttribute('enable_plock_debug', val, ('0',
'1'))
+ def delEnablePlockDebug(self):
+ return self.removeAttribute('enable_plock_debug')
+
def getPlockRatelimit(self):
return self.getBinaryAttribute('plock_rate_limit')
def setPlockRatelimit(self, val):
return self.addBinaryAttribute('plock_rate_limit', val, ('0',
'1'))
+ def delPlockRatelimit(self):
+ return self.removeAttribute('plock_rate_limit')
+
def getPlockOwnership(self):
return self.getBinaryAttribute('plock_ownership')
def setPlockOwnership(self, val):
return self.addBinaryAttribute('plock_ownership', val, ('0',
'1'))
+ def delPlockOwnership(self):
+ return self.removeAttribute('plock_ownership')
+
def getTimeWarn(self):
return self.getAttribute('timewarn')
def setTimeWarn(self, val):
return self.addIntegerAttribute('timewarn', val)
+ def delTimeWarn(self):
+ return self.removeAttribute('timewarn')
+
def getProtocol(self):
return self.getAttribute('protocol')
def setProtocol(self, val):
return self.addAttribute('protocol', val)
+ def delProtocol(self):
+ return self.removeAttribute('protocol')
+
def getDropResourcesTime(self):
return self.getAttribute('drop_resources_time')
def setDropResourcesTime(self, val):
return self.addIntegerAttribute('drop_resources_time', val)
+ def delDropResourcesTime(self):
+ return self.removeAttribute('drop_resources_time')
+
def getDropResourcesCount(self):
return self.getAttribute('drop_resources_count')
def setDropResourcesCount(self, val):
return self.addIntegerAttribute('drop_resources_count', val)
+ def delDropResourcesCount(self):
+ return self.removeAttribute('drop_resources_count')
+
def getDropResourcesAge(self):
return self.getAttribute('drop_resources_age')
def setDropResourcesAge(self, val):
return self.addIntegerAttribute('drop_resources_age', val)
+
+ def delDropResourcesAge(self):
+ return self.removeAttribute('drop_resources_age')
diff --git a/luci/lib/ClusterConf/FailoverDomain.py
b/luci/lib/ClusterConf/FailoverDomain.py
index 215cde7..fdde092 100644
--- a/luci/lib/ClusterConf/FailoverDomain.py
+++ b/luci/lib/ClusterConf/FailoverDomain.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2009 Red Hat, Inc.
+# Copyright (C) 2006-2010 Red Hat, Inc.
#
# This program is free software; you can redistribute
# it and/or modify it under the terms of version 2 of the
@@ -20,18 +20,27 @@ class FailoverDomain(TagObject):
def setRestricted(self, val):
return self.addBinaryAttribute('restricted', val, ('0',
'1'))
+ def delRestricted(self):
+ return self.removeAttribute('restricted')
+
def getOrdered(self):
return self.getBinaryAttribute('ordered')
def setOrdered(self, val):
return self.addBinaryAttribute('ordered', val, ('0', '1'))
+ def delOrdered(self):
+ return self.removeAttribute('ordered')
+
def getNoFailback(self):
return self.getBinaryAttribute('nofailback')
def setNoFailback(self, val):
return self.addBinaryAttribute('nofailback', val, (None, '1'))
+ def delNoFailback(self):
+ return self.removeAttribute('nofailback')
+
def get_member_node(self, nodename):
member_list = self.children
for i in member_list:
diff --git a/luci/lib/ClusterConf/FailoverDomainNode.py
b/luci/lib/ClusterConf/FailoverDomainNode.py
index 8ee3db6..88039ce 100644
--- a/luci/lib/ClusterConf/FailoverDomainNode.py
+++ b/luci/lib/ClusterConf/FailoverDomainNode.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2009 Red Hat, Inc.
+# Copyright (C) 2006-2010 Red Hat, Inc.
#
# This program is free software; you can redistribute
# it and/or modify it under the terms of version 2 of the
@@ -19,3 +19,6 @@ class FailoverDomainNode(TagObject):
def setPriority(self, val):
self.addIntegerAttribute('priority', val, (0, None))
+
+ def delPriority(self):
+ return self.removeAttribute('priority')
diff --git a/luci/lib/ClusterConf/FenceDaemon.py b/luci/lib/ClusterConf/FenceDaemon.py
index 3b7915c..4a8d7af 100644
--- a/luci/lib/ClusterConf/FenceDaemon.py
+++ b/luci/lib/ClusterConf/FenceDaemon.py
@@ -25,34 +25,52 @@ class FenceDaemon(TagObject):
return self.getAttribute('post_join_delay')
def setPostJoinDelay(self, delay):
- self.addIntegerAttribute('post_join_delay', delay, (0, None))
+ return self.addIntegerAttribute('post_join_delay', delay, (0, None))
+
+ def delPostJoinDelay(self):
+ return self.removeAttribute('post_join_delay')
def getPostFailDelay(self):
return self.getAttribute('post_fail_delay')
def setPostFailDelay(self, delay):
- self.addIntegerAttribute('post_fail_delay', delay, (0, None))
+ return self.addIntegerAttribute('post_fail_delay', delay, (0, None))
+
+ def delPostFailDelay(self):
+ return self.removeAttribute('post_fail_delay')
def getCleanStart(self):
- return self.getAttribute('clean_start')
+ return self.getBinaryAttribute('clean_start')
def setCleanStart(self, val):
return self.addBinaryAttribute('clean_start', val, (None, '1'))
+ def delCleanStart(self):
+ return self.removeAttribute('clean_start')
+
def getSkipUndefined(self):
- return self.getAttribute('skip_undefined')
+ return self.getBinaryAttribute('skip_undefined')
def setSkipUndefined(self, val):
return self.addBinaryAttribute('skip_undefined', val, (None, '1'))
+ def delSkipUndefined(self):
+ return self.removeAttribute('skip_undefined')
+
def getOverridePath(self):
return self.getAttribute('override_path')
def setOverridePath(self, val):
return self.addAttribute('override_path', val)
+ def delOverridePath(self):
+ return self.removeAttribute('override_path')
+
def getOverrideTime(self):
return self.getAttribute('override_time')
def setOverrideTime(self, val):
return self.addIntegerAttribute('override_time', val, (0, None))
+
+ def delOverrideTime(self):
+ return self.removeAttribute('override_time')
diff --git a/luci/lib/ClusterConf/FenceXVMd.py b/luci/lib/ClusterConf/FenceXVMd.py
index 8ec3951..1619746 100644
--- a/luci/lib/ClusterConf/FenceXVMd.py
+++ b/luci/lib/ClusterConf/FenceXVMd.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2009 Red Hat, Inc.
+# Copyright (C) 2006-2010 Red Hat, Inc.
#
# This program is free software; you can redistribute
# it and/or modify it under the terms of version 2 of the
@@ -31,30 +31,45 @@ class FenceXVMd(TagObject):
return None
return self.addIntegerAttribute('debug', val)
+ def delDebug(self):
+ return self.removeAttribute('debug')
+
def getPort(self):
return self.getAttribute('port')
def setPort(self, val):
return self.addIntegerAttribute('port', val, (1, 0xffff))
+ def delPort(self):
+ return self.removeAttribute('port')
+
def getUseUUID(self):
return self.getBinaryAttribute('use_uuid')
def setUseUUID(self, val):
return self.addBinaryAttribute('use_uuid', val, (None, '1'))
+ def delUseUUID(self):
+ return self.removeAttribute('use_uuid')
+
def getMulticastAddress(self):
return self.getAttribute('multicast_address')
def setMulticastAddress(self, val):
return self.addAttribute('multicast_address', val)
+ def delMulticastAddress(self):
+ return self.removeAttribute('multicast_address')
+
def getMulticastInterface(self):
return self.getAttribute('multicast_interface')
def setMulticastInterface(self, val):
return self.addAttribute('multicast_interface', val)
+ def delMulticastInterface(self):
+ return self.removeAttribute('multicast_interface')
+
def getAuth(self):
return self.getAttribute('auth')
@@ -64,6 +79,9 @@ class FenceXVMd(TagObject):
raise ValueError, val
return self.addAttribute('auth', val)
+ def delAuth(self):
+ return self.removeAttribute('auth')
+
def getHash(self):
return self.getAttribute('hash')
@@ -73,14 +91,23 @@ class FenceXVMd(TagObject):
raise ValueError, val
return self.addAttribute('hash', val)
+ def delHash(self):
+ return self.removeAttribute('hash')
+
def getURI(self):
return self.getAttribute('uri')
def setURI(self, val):
return self.addAttribute('uri', val)
+ def delURI(self):
+ return self.removeAttribute('uri')
+
def getKeyFile(self):
return self.getAttribute('key_file')
def setKeyFile(self, val):
return self.addAttribute('key_file', val)
+
+ def delKeyFile(self):
+ return self.removeAttribute('key_file')
diff --git a/luci/lib/ClusterConf/GFSControld.py b/luci/lib/ClusterConf/GFSControld.py
index ca80a5d..297a7e6 100644
--- a/luci/lib/ClusterConf/GFSControld.py
+++ b/luci/lib/ClusterConf/GFSControld.py
@@ -32,44 +32,68 @@ class GFSControld(TagObject):
def setEnableWithdraw(self, val):
return self.addBinaryAttribute('enable_withdraw', val, ('0',
'1'))
+ def delEnableWithdraw(self):
+ return self.removeAttribute('enable_withdraw')
+
def getEnablePlock(self):
return self.getBinaryAttribute('enable_plock')
def setEnablePlock(self, val):
return self.addBinaryAttribute('enable_plock', val, ('0',
'1'))
+ def delEnablePlock(self):
+ return self.removeAttribute('enable_plock')
+
def getPlockDebug(self):
return self.getBinaryAttribute('plock_debug')
def setPlockDebug(self, val):
return self.addBinaryAttribute('plock_debug', val, ('0',
'1'))
+ def delPlockDebug(self):
+ return self.removeAttribute('plock_debug')
+
def getPlockRateLimit(self):
return self.getBinaryAttribute('plock_rate_limit')
def setPlockRateLimit(self, val):
return self.addBinaryAttribute('plock_rate_limit', val, ('0',
'1'))
+ def delPlockRateLimit(self):
+ return self.removeAttribute('plock_rate_limit')
+
def getPlockOwnership(self):
return self.getBinaryAttribute('plock_ownership')
def setPlockOwnership(self, val):
return self.addBinaryAttribute('plock_ownership', val, ('0',
'1'))
+ def delPlockOwnership(self):
+ return self.removeAttribute('plock_ownership')
+
def getDropResourcesTime(self):
return self.getAttribute('drop_resources_time')
def setDropResourcesTime(self, val):
return self.addIntegerAttribute('drop_resources_time', val)
+ def delDropResourcesTime(self):
+ return self.removeAttribute('drop_resources_time')
+
def getDropResourcesCount(self):
return self.getAttribute('drop_resources_count')
def setDropResourcesCount(self, val):
return self.addIntegerAttribute('drop_resources_count', val)
+ def delDropResourcesCount(self):
+ return self.removeAttribute('drop_resources_count')
+
def getDropResourcesAge(self):
return self.getAttribute('drop_resources_age')
def setDropResourcesAge(self, val):
return self.addIntegerAttribute('drop_resources_age', val)
+
+ def delDropResourcesAge(self):
+ return self.removeAttribute('drop_resources_age')
diff --git a/luci/lib/ClusterConf/Group.py b/luci/lib/ClusterConf/Group.py
index 69ce000..03df951 100644
--- a/luci/lib/ClusterConf/Group.py
+++ b/luci/lib/ClusterConf/Group.py
@@ -19,3 +19,6 @@ class Group(TagObject):
def setCompat(self, val):
return self.addBinaryAttribute('groupd_compat', val, (None, '1'))
+
+ def delCompat(self):
+ return self.removeAttribute('groupd_compat')
diff --git a/luci/lib/ClusterConf/Interface.py b/luci/lib/ClusterConf/Interface.py
index c13eed3..150e97f 100644
--- a/luci/lib/ClusterConf/Interface.py
+++ b/luci/lib/ClusterConf/Interface.py
@@ -20,26 +20,41 @@ class Interface(TagObject):
def setRingNumber(self, val):
return self.addIntegerAttribute('ringnumber', val)
+ def delRingNumber(self):
+ return self.removeAttribute('ringnumber')
+
def getBindNetAddr(self):
return self.getAttribute('bindnetaddr')
def setBindNetAddr(self, val):
return self.addAttribute('bindnetaddr', val)
+ def delBindNetAddr(self):
+ return self.removeAttribute('bindnetaddr')
+
def getMcastAddr(self):
return self.getAttribute('mcastaddr')
def setMcastAddr(self, val):
return self.addAttribute('mcastaddr', val)
+ def delMcastAddr(self):
+ return self.removeAttribute('mcastaddr')
+
def getMcastPort(self):
return self.getAttribute('mcastport')
def setMcastPort(self, val):
- return self.addIntegerAttribute('mcastport', val)
+ return self.addIntegerAttribute('mcastport', val, (0, 0xffff))
+
+ def delMcastPort(self):
+ return self.removeAttribute('mcastport')
def getBroadcast(self):
return self.getBinaryAttribute('broadcast')
def setBroadcast(self, val):
return self.addBinaryAttribute('broadcast', val, (None, 'yes'))
+
+ def delBroadcast(self):
+ return self.removeAttribute('broadcast')
diff --git a/luci/lib/ClusterConf/Lockspace.py b/luci/lib/ClusterConf/Lockspace.py
index 206e7d3..f67db63 100644
--- a/luci/lib/ClusterConf/Lockspace.py
+++ b/luci/lib/ClusterConf/Lockspace.py
@@ -15,7 +15,10 @@ class Lockspace(TagObject):
self.TAG_NAME = TAG_NAME
def getNodir(self):
- return self.getAttribute('nodir')
+ return self.getBinaryAttribute('nodir')
def setNodir(self, val):
- self.addBinaryAttribute('nodir', val, ('0', '1'))
+ return self.addBinaryAttribute('nodir', val, ('0', '1'))
+
+ def delNodir(self):
+ return self.removeAttribute('nodir')
diff --git a/luci/lib/ClusterConf/Logging.py b/luci/lib/ClusterConf/Logging.py
index 7e2511b..15d8446 100644
--- a/luci/lib/ClusterConf/Logging.py
+++ b/luci/lib/ClusterConf/Logging.py
@@ -15,43 +15,64 @@ class Logging(TagObject):
self.TAG_NAME = TAG_NAME
def getSyslog(self):
- return self.getAttribute('to_syslog')
+ return self.getBinaryAttribute('to_syslog')
def setSyslog(self, val):
return self.addBinaryAttribute('to_syslog', val, ('no',
'yes'))
+ def delSyslog(self):
+ return self.removeAttribute('to_syslog')
+
def getLogfile(self):
- return self.getAttribute('to_logfile')
+ return self.getBinaryAttribute('to_logfile')
def setLogfile(self, val):
return self.addBinaryAttribute('to_logfile', val, ('no',
'yes'))
+ def delLogfile(self):
+ return self.removeAttribute('to_logfile')
+
def getLogfilePath(self):
return self.getAttribute('logfile')
def setLogFilePath(self, path):
return self.addAttribute('logfile', path)
+ def delLogfilePath(self):
+ return self.removeAttribute('logfile')
+
def getSyslogFacility(self):
return self.getAttribute('syslog_facility')
def setSyslogFacility(self, val):
return self.addAttribute('syslog_facility', val)
+ def delSyslogFacility(self):
+ return self.removeAttribute('syslog_facility')
+
def getSyslogPriority(self):
return self.getAttribute('syslog_priority')
def setSyslogPriority(self, val):
return self.addAttribute('syslog_priority', val)
+ def delSyslogPriority(self):
+ return self.removeAttribute('syslog_priority')
+
def getLogfilePriority(self):
return self.getAttribute('logfile_priority')
def setLogfilePriority(self, val):
return self.addAttribute('logfile_priority', val)
+ def delLogfilePriority(self):
+ return self.removeAttribute('logfile_priority')
+
def getDebug(self):
- return self.getAttribute('debug')
+ return self.getBinaryAttribute('debug')
def setDebug(self, val):
return self.addBinaryAttribute('debug', val, (None, 'on'))
+
+ def delDebug(self):
+ return self.removeAttribute('debug')
diff --git a/luci/lib/ClusterConf/Master.py b/luci/lib/ClusterConf/Master.py
index aacd4c3..c0fadfe 100644
--- a/luci/lib/ClusterConf/Master.py
+++ b/luci/lib/ClusterConf/Master.py
@@ -19,3 +19,7 @@ class Master(TagObject):
def setWeight(self, val):
return self.addIntegerAttribute('weight', val, (0, None))
+
+ def delWeight(self):
+ return self.removeAttribute('weight')
+
diff --git a/luci/lib/ClusterConf/Multicast.py b/luci/lib/ClusterConf/Multicast.py
index 3806f10..5940b5a 100644
--- a/luci/lib/ClusterConf/Multicast.py
+++ b/luci/lib/ClusterConf/Multicast.py
@@ -19,3 +19,6 @@ class Multicast(TagObject):
def setAddr(self, val):
return self.addAttribute('addr', val)
+
+ def delAddr(self, val):
+ return self.removeAttribute('addr', val)
diff --git a/luci/lib/ClusterConf/NFSClient.py b/luci/lib/ClusterConf/NFSClient.py
index cb41ee7..746fcff 100644
--- a/luci/lib/ClusterConf/NFSClient.py
+++ b/luci/lib/ClusterConf/NFSClient.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2009 Red Hat, Inc.
+# Copyright (C) 2006-2010 Red Hat, Inc.
#
# This program is free software; you can redistribute
# it and/or modify it under the terms of version 2 of the
@@ -18,5 +18,4 @@ class NFSClient(BaseResource):
BaseResource.__init__(self)
self.TAG_NAME = TAG_NAME
self.resource_type = RESOURCE_TYPE
- #self.addAttribute('name', ' ')
self.deny_all_children = DENY_ALL_CHILDREN
diff --git a/luci/lib/ClusterConf/QuorumD.py b/luci/lib/ClusterConf/QuorumD.py
index 07cd9f5..216ab4b 100644
--- a/luci/lib/ClusterConf/QuorumD.py
+++ b/luci/lib/ClusterConf/QuorumD.py
@@ -24,30 +24,45 @@ class QuorumD(TagObject):
def setVotes(self, val):
return self.addIntegerAttribute('votes', val, (1, None))
+ def delVotes(self):
+ return self.removeAttribute('votes')
+
def getInterval(self):
return self.getAttribute('interval')
def setInterval(self, val):
return self.addIntegerAttribute('interval', val, (0, None))
+ def delInterval(self):
+ return self.removeAttribute('interval')
+
def getTKO(self):
return self.getAttribute('tko')
def setTKO(self, val):
return self.addIntegerAttribute('tko', val, (0, None))
+ def delTKO(self):
+ return self.removeAttribute('tko')
+
def getMinScore(self):
return self.getAttribute('min_score')
def setMinScore(self, val):
return self.addIntegerAttribute('min_score', val, (0, None))
+ def delMinScore(self):
+ return self.removeAttribute('min_score')
+
def getDevice(self):
return self.getAttribute('device')
def setDevice(self, val):
return self.addAttribute('device', val)
+ def delDevice(self):
+ return self.removeAttribute('device')
+
def getLabel(self):
return self.getAttribute('label')
@@ -57,15 +72,24 @@ class QuorumD(TagObject):
def getCmanLabel(self):
return self.getAttribute('cman_label')
+ def delLabel(self):
+ return self.removeAttribute('label')
+
def setCmanLabel(self, val):
return self.addAttribute('cman_label', val)
+ def delCmanLabel(self):
+ return self.removeAttribute('cman_label')
+
def getStatusFile(self):
return self.getAttribute('status_file')
def setStatusFile(self, val):
return self.addAttribute('status_file', val)
+ def delStatusFile(self):
+ return self.removeAttribute('status_file')
+
def getScheduler(self):
return self.getAttribute('scheduler')
@@ -75,71 +99,107 @@ class QuorumD(TagObject):
raise ValueError, sched
return self.addAttribute('scheduler', sched)
+ def delScheduler(self):
+ return self.removeAttribute('scheduler')
+
def getReboot(self):
return self.getBinaryAttribute('reboot')
def setReboot(self, val):
return self.addBinaryAttribute('reboot', val, (None, '1'))
+ def delReboot(self):
+ return self.removeAttribute('reboot')
+
def getPriority(self):
return self.getAttribute('priority')
def setPriority(self, val):
return self.addIntegerAttribute('priority', val)
+ def delPriority(self):
+ return self.removeAttribute('priority')
+
def getStopCman(self):
return self.getBinaryAttribute('stop_cman')
def setStopCman(self, val):
return self.addBinaryAttribute('stop_cman', val, (None, '1'))
+ def delStopCman(self):
+ return self.removeAttribute('stop_cman')
+
def getParanoid(self):
return self.getBinaryAttribute('paranoid')
def setParanoid(self, val):
return self.addBinaryAttribute('paranoid', val, (None, '1'))
+ def delParanoid(self):
+ return self.removeAttribute('paranoid')
+
def getAllowKill(self):
return self.getBinaryAttribute('allow_kill')
def setAllowKill(self, val):
return self.addBinaryAttribute('allow_kill', val, (None, '1'))
+ def delAllowKill(self):
+ return self.removeAttribute('allow_kill')
+
def getMaxErrorCycles(self):
return self.getAttribute('max_error_cycles')
def setMaxErrorCycles(self, val):
return self.addIntegerAttribute('max_error_cycles', val, (0, None))
+ def delMaxErrorCycles(self):
+ return self.removeAttribute('max_error_cycles')
+
def getIOTimeout(self):
return self.getAttribute('io_timeout')
def setIOTimeout(self, val):
return self.addIntegerAttribute('io_timeout', val, (0, None))
+ def delIOTimeout(self):
+ return self.removeAttribute('io_timeout')
+
def getMasterWins(self):
return self.getBinaryAttribute('master_wins')
def setMasterWins(self, val):
return self.addBinaryAttribute('master_wins', val, (None, '1'))
+ def delMasterWins(self):
+ return self.removeAttribute('master_wins')
+
def getTKOUp(self):
return self.getAttribute('tko_up')
def setTKOUp(self, val):
return self.addIntegerAttribute('tko_up', val, (0, None))
+ def delTKOUp(self):
+ return self.removeAttribute('tko_up')
+
def getUpgradeWait(self):
return self.getAttribute('upgrade_wait')
def setUpgradeWait(self, val):
return self.addIntegerAttribute('upgrade_wait', val, (1, None))
+ def delUpgradeWait(self):
+ return self.removeAttribute('upgrade_wait')
+
def getUseUptime(self):
return self.getBinaryAttribute('use_uptime')
def setUseUptime(self, val):
return self.addBinaryAttribute('use_uptime', val, ('0', None))
+ def delUseUptime(self):
+ return self.removeAttribute('use_uptime')
+
def getHeuristicsLen(self):
return len(self.children)
diff --git a/luci/lib/ClusterConf/Rm.py b/luci/lib/ClusterConf/Rm.py
index 39369d4..bfec0e6 100644
--- a/luci/lib/ClusterConf/Rm.py
+++ b/luci/lib/ClusterConf/Rm.py
@@ -20,20 +20,33 @@ class Rm(TagObject):
def setStatusChildMax(self, val):
return self.addIntegerAttribute('status_child_max', val, (0, None))
+ def delStatusChildMax(self):
+ return self.removeAttribute('status_child_max')
+
def getStatusPollInterval(self):
return self.getAttribute('status_poll_interval')
def setStatusPollInterval(self, val):
return self.addIntegerAttribute('status_poll_interval', val, (0, None))
+ def delStatusPollInterval(self):
+ return self.removeAttribute('status_poll_interval')
+
def getCentralProcessing(self):
- return self.getAttribute('central_processing')
+ return self.getBinaryAttribute('central_processing')
def setCentralProcessing(self, val):
return self.addBinaryAttribute('central_processing', val, (None,
'1'))
+ def delCentralProcessing(self):
+ return self.removeAttribute('central_processing')
+
def getTransitionThrottling(self):
return self.getAttribute('transition_throttling')
def setTransitionThrottling(self, val):
return self.addIntegerAttribute('transition_throttling', val, (0, None))
+
+ def delTransitionThrottling(self):
+ return self.removeAttribute('transition_throttling')
+
diff --git a/luci/lib/ClusterConf/Service.py b/luci/lib/ClusterConf/Service.py
index 4e3a187..6681a5d 100644
--- a/luci/lib/ClusterConf/Service.py
+++ b/luci/lib/ClusterConf/Service.py
@@ -20,89 +20,80 @@ class Service(TagObject):
def setAutostart(self, val):
return self.addBinaryAttribute('autostart', val, ('0', '1'))
+ def delAutostart(self):
+ return self.removeAttribute('autostart')
+
def getExclusive(self):
return self.getBinaryAttribute('exclusive')
def setExclusive(self, val):
return self.addBinaryAttribute('exclusive', val, ('0', '1'))
+ def delExclusive(self):
+ return self.removeAttribute('exclusive')
+
def getFailoverDomain(self):
return self.getAttribute('domain')
def setFailoverDomain(self, val):
return self.addAttribute('domain', val)
+ def delFailoverDomain(self):
+ return self.removeAttribute('domain')
+
def getRecoveryPolicy(self):
return self.getAttribute('recovery')
def setRecoveryPolicy(self, val):
return self.addAttribute('recovery', val)
+ def delRecoveryPolicy(self):
+ return self.removeAttribute('recovery')
+
def getNFSLock(self):
return self.getBinaryAttribute('nfslock')
def setNFSLock(self, val):
return self.addBinaryAttribute('nfslock', val, (None, '1'))
+ def delNFSLock(self):
+ return self.removeAttribute('nfslock')
+
def getNFSClientCache(self):
return self.getBinaryAttribute('nfs_client_cache')
def setNFSClientCache(self, val):
return self.addBinaryAttribute('nfs_client_cache', val, (None, '1'))
+ def delNFSClientCache(self):
+ return self.removeAttribute('nfs_client_cache')
+
def getMaxRestarts(self):
return self.getAttribute('max_restarts')
def setMaxRestarts(self, val):
return self.addIntegerAttribute('max_restarts', val, (0, None))
+ def delMaxRestarts(self):
+ return self.removeAttribute('max_restarts')
+
def getRestartExpireTime(self):
return self.getAttribute('restart_expire_time')
def setRestartExpireTime(self, val):
return self.addIntegerAttribute('restart_expire_time', val, (0, None))
+ def delRestartExpireTime(self):
+ return self.removeAttribute('restart_expire_time')
+
def getPriority(self):
return self.getAttribute('priority')
def setPriority(self, val):
return self.addIntegerAttribute('priority', val)
- def getIndependentSubtree(self):
- return self.getAttribute('__independent_subtree')
-
- def setIndependentSubtree(self, val):
- return self.addIntegerAttribute('__independent_subtree', val)
-
- def getEnforceTimeouts(self):
- return self.getBinaryAttribute('__enforce_timeouts')
-
- def setEnforceTimeouts(self, val):
- return self.addBinaryAttribute('__enforce_timeouts', val (None,
'1'))
-
- def getMaxFailures(self):
- return self.getAttribute('__max_failures')
-
- def setMaxFailures(self, val):
- return self.addIntegerAttribute('__max_failures', val, (0, None))
-
- def getFailureExpireTime(self):
- return self.getAttribute('__failure_expire_time')
-
- def setFailureExpireTime(self, val):
- return self.addIntegerAttribute('__failure_expire_time', val, (0, None))
-
- def getMaxRestartsIST(self):
- return self.getAttribute('__max_restarts')
-
- def setMaxRestartsIST(self, val):
- return self.addIntegerAttribute('__max_restarts', val, (0, None))
-
- def getRestartExpireTimeIST(self):
- return self.getAttribute('__restart_expire_time')
-
- def setRestartExpireTimeIST(self, val):
- return self.addIntegerAttribute('__restart_expire_time', val, (0, None))
+ def delPriority(self):
+ return self.removeAttribute('priority')
def getDependMode(self):
return self.getAttribute('depend_mode')
@@ -113,8 +104,14 @@ class Service(TagObject):
raise ValueError, val
return self.addAttribute('depend_mode', val)
+ def delDependMode(self):
+ return self.removeAttribute('depend_mode')
+
def getDepend(self):
return self.getAttribute('depend')
def setDepend(self, val):
return self.addAttribute('depend', val)
+
+ def delDepend(self):
+ return self.removeAttribute('depend')
diff --git a/luci/lib/ClusterConf/TagObject.py b/luci/lib/ClusterConf/TagObject.py
index 4cfd56b..3dbbe9d 100644
--- a/luci/lib/ClusterConf/TagObject.py
+++ b/luci/lib/ClusterConf/TagObject.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2009 Red Hat, Inc.
+# Copyright (C) 2006-2010 Red Hat, Inc.
#
# This program is free software; you can redistribute
# it and/or modify it under the terms of version 2 of the
@@ -19,10 +19,6 @@ class TagObject(object):
def removeChild(self, child):
self.children.remove(child)
- def addAttribute(self, name, value):
- self.attr_hash[name] = value
- return value
-
def removeAttribute(self, key):
try:
del self.attr_hash[key]
@@ -30,7 +26,16 @@ class TagObject(object):
return False
return True
+ def addAttribute(self, name, value):
+ if value is None:
+ return self.removeAttribute(name)
+ self.attr_hash[name] = value
+ return value
+
def addIntegerAttribute(self, name, val, bounds=(None, None)):
+ if val is None:
+ self.removeAttribute(name)
+ return None
int_val = int(val)
if bounds and type(bounds) is tuple:
if len(bounds) > 0 and bounds[0] is not None:
@@ -43,7 +48,7 @@ class TagObject(object):
def addBinaryAttribute(self, name, value, mapping):
if value is None:
- self.removeAttribute('name')
+ self.removeAttribute(name)
return None
val_type = type(value)
if val_type in (str, unicode):
diff --git a/luci/lib/ClusterConf/Totem.py b/luci/lib/ClusterConf/Totem.py
index 3ebf29e..bf270a2 100644
--- a/luci/lib/ClusterConf/Totem.py
+++ b/luci/lib/ClusterConf/Totem.py
@@ -28,24 +28,36 @@ class Totem(TagObject):
def setJoinTimeout(self, val):
return self.addIntegerAttribute('join', val)
+ def delJoinTimeout(self):
+ return self.removeAttribute('join')
+
def getTokenTimeout(self):
return self.getAttribute('token')
def setTokenTimeout(self, val):
return self.addIntegerAttribute('token', val)
+ def delTokenTimeout(self):
+ return self.removeAttribute('token')
+
def getTokenRetransmits(self):
return self.getAttribute('token_retransmits_before_loss_const')
def setTokenRetransmits(self, val):
return self.addIntegerAttribute('token_retransmits_before_loss_const', val)
+ def delTokenRetransmits(self):
+ return self.removeAttribute('token_retransmits_before_loss_const')
+
def getConsensusTimeout(self):
return self.getAttribute('consensus')
def setConsensusTimeout(self, val):
return self.addIntegerAttribute('consensus', val)
+ def delConsensusTimeout(self):
+ return self.removeAttribute('consensus')
+
def getRRPMode(self):
return self.getAttribute('rrp_mode')
@@ -60,20 +72,32 @@ class Totem(TagObject):
self.addAttribute('rrp_mode', val)
return val
+ def delRRPMode(self):
+ return self.removeAttribute('rrp_mode')
+
def getSecAuth(self):
return self.getBinaryAttribute('secauth')
def setSecAuth(self, val):
return self.addBinaryAttribute('secauth', val, ('off',
'on'))
+ def delSecAuth(self):
+ return self.removeAttribute('secauth')
+
def getFailRecvConst(self):
return self.getAttribute('fail_recv_const')
def setFailRecvConst(self, val):
return self.addIntegerAttribute('fail_recv_const', val)
+ def delFailRecvConst(self):
+ return self.removeAttribute('fail_recv_const')
+
def getKeyFile(self):
return self.getAttribute('keyfile')
def setKeyFile(self, val):
return self.addAttribute('keyfile', val)
+
+ def delKeyFile(self):
+ return self.removeAttribute('keyfile')
diff --git a/luci/widget_validators/validate_cluster_prop.py
b/luci/widget_validators/validate_cluster_prop.py
index 7b2481f..7e6f940 100644
--- a/luci/widget_validators/validate_cluster_prop.py
+++ b/luci/widget_validators/validate_cluster_prop.py
@@ -408,7 +408,7 @@ def validate_cluster_config_form(model, **kw):
except:
errors.append(_('Invalid value for totem join timeout : %s') %
join_timeout)
else:
- if int(join_timeout) != Totem.DEFAULTS.get('join'):
+ if join_timeout != Totem.DEFAULTS.get('join'):
totem.setJoinTimeout(join_timeout)
else:
totem.removeAttribute('join')