From mboxrd@z Thu Jan 1 00:00:00 1970 From: rmccabe@sourceware.org Date: 22 Jan 2009 21:31:42 -0000 Subject: [Cluster-devel] conga/luci/site/luci/Extensions/ClusterModel M ... Message-ID: <20090122213142.13021.qmail@sourceware.org> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit CVSROOT: /cvs/cluster Module name: conga Branch: RHEL5 Changes by: rmccabe at sourceware.org 2009-01-22 21:31:41 Modified files: luci/site/luci/Extensions/ClusterModel: ModelBuilder.py QuorumD.py Log message: Fix Fix bz467464 Patches: 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.10&r2=1.1.4.11 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/QuorumD.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.2&r2=1.1.4.3 --- conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py 2009/01/22 20:35:27 1.1.4.10 +++ conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py 2009/01/22 21:31:41 1.1.4.11 @@ -1101,6 +1101,25 @@ continue self.__removeReferences(tagobj, t) + def get_expected_votes(self): + node_votes = 0 + qdisk_votes = 0 + + if self.quorumd_ptr is not None: + try: + qdisk_votes = int(self.quorumd_ptr.getVotes()) + except: + qdisk_votes = 0 + + for i in self.getNodes(): + try: + cur_votes = int(i.getVotes()) + except: + cur_votes = 1 + node_votes += cur_votes + + return node_votes + qdisk_votes + def updateReferences(self): self.__updateReferences(self.cluster_ptr) def __updateReferences(self, level): @@ -1135,17 +1154,17 @@ self.cluster_ptr.addChild(cman) self.CMAN_ptr = cman - if clusternodes_count == 2: - if not self.isQuorumd(): + if not self.isQuorumd(): + if clusternodes_count == 2: self.CMAN_ptr.addAttribute('two_node', '1') self.CMAN_ptr.addAttribute('expected_votes', '1') else: self.CMAN_ptr.removeAttribute('two_node') - if self.CMAN_ptr.getAttribute('expected_votes') in ('0', '1'): - self.CMAN_ptr.removeAttribute('expected_votes') + self.CMAN_ptr.removeAttribute('expected_votes') else: self.CMAN_ptr.removeAttribute('two_node') - + self.CMAN_ptr.addAttribute('expected_votes', str(self.get_expected_votes())) + def dual_power_fence_check(self): # if 2 or more power controllers reside in the same fence level, # duplicate entries must be made for every controller with an --- conga/luci/site/luci/Extensions/ClusterModel/QuorumD.py 2008/01/23 04:44:34 1.1.4.2 +++ conga/luci/site/luci/Extensions/ClusterModel/QuorumD.py 2009/01/22 21:31:41 1.1.4.3 @@ -1,4 +1,4 @@ -# Copyright (C) 2006-2008 Red Hat, Inc. +# Copyright (C) 2006-2009 Red Hat, Inc. # # This program is free software; you can redistribute # it and/or modify it under the terms of version 2 of the @@ -13,3 +13,12 @@ def __init__(self): TagObject.__init__(self) self.TAG_NAME = TAG_NAME + + def getVotes(self): + try: + num_votes = self.getAttribute('votes') + if num_votes is not None: + return int(num_votes) + except: + pass + return 0