[Cluster-devel] conga/luci/site/luci/Extensions/ClusterModel M ...

rmccabe at sourceware.org rmccabe at sourceware.org
Thu Jan 22 21:31:42 UTC 2009


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




More information about the Cluster-devel mailing list