From: rmccabe@sourceware.org <rmccabe@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] conga/luci/site/luci/Extensions FenceHandler.p ...
Date: 3 Oct 2007 19:40:38 -0000 [thread overview]
Message-ID: <20071003194038.28796.qmail@sourceware.org> (raw)
CVSROOT: /cvs/cluster
Module name: conga
Changes by: rmccabe at sourceware.org 2007-10-03 19:40:37
Modified files:
luci/site/luci/Extensions: FenceHandler.py
luci/site/luci/Extensions/ClusterModel: Device.py FenceDevice.py
FenceDeviceAttr.py
ModelBuilder.py
Log message:
Fix a bug that caused the check for dual power fencing to fail when adding new fence instances for the first time.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/FenceHandler.py.diff?cvsroot=cluster&r1=1.26&r2=1.27
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/Device.py.diff?cvsroot=cluster&r1=1.5&r2=1.6
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/FenceDevice.py.diff?cvsroot=cluster&r1=1.3&r2=1.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/FenceDeviceAttr.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.11&r2=1.12
--- conga/luci/site/luci/Extensions/FenceHandler.py 2007/10/03 02:11:58 1.26
+++ conga/luci/site/luci/Extensions/FenceHandler.py 2007/10/03 19:40:37 1.27
@@ -1077,6 +1077,7 @@
fenceinst = Device()
fenceinst.addAttribute('name', parent_name)
+ fenceinst.setAgentType(fence_agent)
if form.has_key('option'):
option = form['option'].strip()
--- conga/luci/site/luci/Extensions/ClusterModel/Device.py 2007/09/20 22:37:32 1.5
+++ conga/luci/site/luci/Extensions/ClusterModel/Device.py 2007/10/03 19:40:37 1.6
@@ -31,11 +31,7 @@
return self.has_native_option_set
def isPowerController(self):
- for item in FenceDeviceAttr.FENCE_POWER_CONTROLLERS:
- if self.agent_type == item:
- return True
-
- return False
+ return self.agent_type in FenceDeviceAttr.FENCE_POWER_CONTROLLERS
def addAttribute(self, name, value):
if name == OPTION:
--- conga/luci/site/luci/Extensions/ClusterModel/FenceDevice.py 2007/09/20 22:37:32 1.3
+++ conga/luci/site/luci/Extensions/ClusterModel/FenceDevice.py 2007/10/03 19:40:37 1.4
@@ -29,7 +29,11 @@
return agent
def getPrettyName(self):
- return self.pretty_fence_names[self.attr_hash['name']]
+ agent_type = self.getAgentType()
+ pname = self.pretty_fence_names.get(agent_type)
+ if pname is None:
+ pname = agent_type
+ return pname
def isShared(self):
agent = self.getAgentType()
@@ -39,8 +43,4 @@
return False
else:
return True
-
- try:
- return self.shared_fences[agent]
- except KeyError, e:
- return False
+ return self.shared_fences.has_key(agent)
--- conga/luci/site/luci/Extensions/ClusterModel/FenceDeviceAttr.py 2007/09/21 16:06:52 1.2
+++ conga/luci/site/luci/Extensions/ClusterModel/FenceDeviceAttr.py 2007/10/03 19:40:37 1.3
@@ -5,7 +5,11 @@
# GNU General Public License as published by the
# Free Software Foundation.
-FENCE_POWER_CONTROLLERS = [ 'fence_wti', 'fence_apc', 'fence_apc_snmp' ]
+FENCE_POWER_CONTROLLERS = (
+ 'fence_wti',
+ 'fence_apc',
+ 'fence_apc_snmp'
+)
FENCE_OPTS = {
'fence_apc': 'APC Power Device',
@@ -70,61 +74,61 @@
}
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': [ 'node' ],
- 'fence_ilo': [ ],
- 'fence_ipmilan': [ ],
- 'fence_drac': [ ],
- 'fence_rsa': [ ],
- 'fence_rps10': [ ],
- 'fence_manual': [ ]
+ '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': ( 'node' ),
+ 'fence_ilo': ( ),
+ 'fence_ipmilan': ( ),
+ 'fence_drac': ( ),
+ 'fence_rsa': ( ),
+ 'fence_rps10': ( ),
+ 'fence_manual': ( )
}
FENCE_FD_ATTRS = {
'fence_apc':
- [ 'name', 'ipaddr', 'login', 'passwd' ],
+ ( 'name', 'ipaddr', 'login', 'passwd' ),
'fence_wti':
- [ 'name', 'ipaddr', 'passwd' ],
+ ( 'name', 'ipaddr', 'passwd' ),
'fence_brocade':
- [ 'name', 'ipaddr', 'login', 'passwd' ],
+ ( 'name', 'ipaddr', 'login', 'passwd' ),
'fence_vixel':
- [ 'name', 'ipaddr', 'passwd' ],
+ ( 'name', 'ipaddr', 'passwd' ),
'fence_gnbd':
- [ 'name', 'servers' ],
+ ( 'name', 'servers' ),
'fence_sanbox2':
- [ 'name', 'ipaddr', 'login', 'passwd' ],
+ ( 'name', 'ipaddr', 'login', 'passwd' ),
'fence_bladecenter':
- [ 'name', 'ipaddr', 'login', 'passwd' ],
+ ( 'name', 'ipaddr', 'login', 'passwd' ),
'fence_mcdata':
- [ 'name', 'ipaddr', 'login', 'passwd' ],
+ ( 'name', 'ipaddr', 'login', 'passwd' ),
'fence_egenera':
- [ 'name', 'cserver' ],
+ ( 'name', 'cserver' ),
'fence_bullpap':
- [ 'name', 'ipaddr', 'login', 'passwd' ],
+ ( 'name', 'ipaddr', 'login', 'passwd' ),
'fence_xvm':
- [ 'name' ],
+ ( 'name' ),
'fence_scsi':
- [ 'name' ],
+ ( 'name' ),
'fence_ilo':
- [ 'name', 'hostname', 'login', 'passwd' ],
+ ( 'name', 'hostname', 'login', 'passwd' ),
'fence_ipmilan':
- [ 'name', 'ipaddr', 'login', 'passwd', 'lanplus', 'auth' ],
+ ( 'name', 'ipaddr', 'login', 'passwd', 'lanplus', 'auth' ),
'fence_drac':
- [ 'name', 'ipaddr', 'login', 'passwd' ],
+ ( 'name', 'ipaddr', 'login', 'passwd' ),
'fence_rsa':
- [ 'name', 'hostname', 'login', 'passwd' ],
+ ( 'name', 'hostname', 'login', 'passwd' ),
'fence_rps10':
- [ 'name', 'device', 'port' ],
+ ( 'name', 'device', 'port' ),
'fence_manual':
- [ 'name' ]
+ ( 'name' )
}
--- conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py 2007/09/21 03:02:47 1.11
+++ conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py 2007/10/03 19:40:37 1.12
@@ -347,21 +347,17 @@
##a separate pass, after the DOM is completely built. This method
##sets the agent type for each fence instance.
def resolve_fence_instance_types(self):
- fds = self.getFenceDevices()
agent_hash = {}
- for fd in fds:
- agent = fd.getAttribute("agent")
+ for fd in self.getFenceDevices():
+ agent = fd.getAgentType()
if agent is not None:
agent_hash[fd.getName()] = agent
- nodes = self.getNodes()
- for node in nodes:
- levels = node.getFenceLevels()
- for level in levels:
- children = level.getChildren()
- for child in children:
+ for node in self.getNodes():
+ for level in node.getFenceLevels():
+ for child in level.getChildren():
child.setAgentType(agent_hash[child.getName()])
-
+
##This method builds RefObject containers for appropriate
##entities after the object tree is built.
def resolve_references(self):
@@ -1137,40 +1133,36 @@
self.CMAN_ptr.removeAttribute('two_node')
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
- #attribute for option set first for off, then for on.
-
- #for every node:
- #for every fence level:
- #examine every fence
- #If fence is of power type, add to 'found' list for that level
- #If 'found' list is longer than 1, write out extra objs
- nodes = self.getNodes()
- for node in nodes:
- levels = node.getFenceLevels()
- for level in levels:
- kids = level.getChildren()
- l = list()
- for kid in kids:
- if kid.hasNativeOptionSet() == True:
+ # if 2 or more power controllers reside in the same fence level,
+ # duplicate entries must be made for every controller with an
+ # attribute for option set first for off, then for on.
+
+ # for every node:
+ # for every fence level:
+ # examine every fence
+ # If fence is of power type, add to 'found' list for that level
+ # If 'found' list is longer than 1, write out extra objs
+ for node in self.getNodes():
+ for level in node.getFenceLevels():
+ pc_list = list()
+ for kid in level.getChildren():
+ if kid.hasNativeOptionSet() is True:
continue
if kid.isPowerController() is True:
- l.append(kid)
- if len(l) > 1: #Means we found multiple PCs in the same level
- for fence in l:
- fence.addAttribute("option", "off")
- for fence in l:
- if fence.getAttribute("option") == "off":
- d = Device()
- d.setAgentType(fence.getAgentType())
- attrs = fence.getAttributes()
- kees = attrs.keys()
- for k in kees:
- d.addAttribute(k, attrs[k])
- d.addAttribute("option", "on")
- level.addChild(d)
+ pc_list.append(kid)
+ if len(pc_list) > 1:
+ # Means we found multiple PCs in the same level
+ for fence in pc_list:
+ fence.addAttribute("option", "off")
+ d = Device()
+ d.setAgentType(fence.getAgentType())
+ attrs = fence.getAttributes()
+ for (k, v) in attrs.iteritems():
+ d.addAttribute(k, v)
+ d.addAttribute("option", "on")
+ level.addChild(d)
+
def purgePCDuplicates(self):
found_one = True
while found_one is True:
next reply other threads:[~2007-10-03 19:40 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-03 19:40 rmccabe [this message]
-- strict thread matches above, loose matches on Subject: below --
2010-08-06 20:17 [Cluster-devel] conga/luci/site/luci/Extensions FenceHandler.p rmccabe
2008-01-02 21:00 rmccabe
2007-09-21 3:02 rmccabe
2007-07-26 4:36 rmccabe
2007-05-15 21:42 rmccabe
2007-01-19 21:48 rmccabe
2007-01-19 19:41 rmccabe
2007-01-11 22:49 rmccabe
2006-12-20 22:06 jparsons
2006-12-20 20:24 jparsons
2006-12-18 22:16 jparsons
2006-12-18 15:18 jparsons
2006-12-18 4:44 jparsons
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20071003194038.28796.qmail@sourceware.org \
--to=rmccabe@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.