cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
From: rmccabe@sourceware.org <rmccabe@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] conga/luci/site/luci/Extensions cluster_adapte ...
Date: 2 Nov 2006 03:17:08 -0000	[thread overview]
Message-ID: <20061102031708.7216.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/cluster
Module name:	conga
Changes by:	rmccabe at sourceware.org	2006-11-02 03:17:07

Modified files:
	luci/site/luci/Extensions: cluster_adapters.py 
	                           homebase_adapters.py 

Log message:
	homebase_adapters cleanup, logging, and exception robustness
	fix a bug that causes IP resource creation to fail in cluster_adapters

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.135&r2=1.136
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/homebase_adapters.py.diff?cvsroot=cluster&r1=1.38&r2=1.39

--- conga/luci/site/luci/Extensions/cluster_adapters.py	2006/10/31 17:18:12	1.135
+++ conga/luci/site/luci/Extensions/cluster_adapters.py	2006/11/02 03:17:07	1.136
@@ -3090,7 +3090,11 @@
       rc = RicciCommunicator(ricci[0])
       finished = checkBatch(rc, item[1].getProperty(BATCH_ID))
       if finished == True:
-        node_report['desc'] = item[1].getProperty(FLAG_DESC) + REDIRECT_MSG
+        flag_desc = item[1].getProperty(FLAG_DESC)
+        if flag_desc is None:
+          node_report['desc'] = REDIRECT_MSG
+        else:
+          node_report['desc'] = flag_desc + REDIRECT_MSG
         nodereports.append(node_report)
         try:
             clusterfolder.manage_delObjects(item[0])
@@ -4009,7 +4013,7 @@
 		flag.manage_addProperty(BATCH_ID, batch_id, "string")
 		flag.manage_addProperty(TASKTYPE, RESOURCE_ADD, "string")
 
-		if type != 'ip':
+		if res.attr_hash['type'] != 'ip':
 			flag.manage_addProperty(FLAG_DESC, "Creating New Resource \'" + res.attr_hash['name'] + "\'", "string")
 		else:
 			flag.manage_addProperty(FLAG_DESC, "Creating New Resource \'" + res.attr_hash['address'] + "\'", "string")
--- conga/luci/site/luci/Extensions/homebase_adapters.py	2006/11/01 20:34:02	1.38
+++ conga/luci/site/luci/Extensions/homebase_adapters.py	2006/11/02 03:17:07	1.39
@@ -1,23 +1,20 @@
-import string
 import re
-import sys
 import os
 from AccessControl import getSecurityManager
-from ZPublisher import HTTPRequest
-import xml.dom
 import cgi
 
-from ricci_defines import *
+from conga_constants import PLONE_ROOT, CLUSTER_NODE_NEED_AUTH, \
+							HOMEBASE_ADD_CLUSTER, HOMEBASE_ADD_CLUSTER_INITIAL, \
+							HOMEBASE_ADD_SYSTEM, HOMEBASE_ADD_USER, \
+							HOMEBASE_DEL_SYSTEM, HOMEBASE_DEL_USER, HOMEBASE_PERMS
 from ricci_bridge import getClusterConf
-from ricci_communicator import RicciCommunicator
-from ricci_communicator import CERTS_DIR_PATH
+from ricci_communicator import RicciCommunicator, CERTS_DIR_PATH
 from clusterOS import resolveOSType
-from conga_constants import *
-from LuciSyslog import LuciSyslog, LuciSyslogError
+from LuciSyslog import LuciSyslog
 
 try:
 	luci_log = LuciSyslog()
-except LuciSyslogError, e:
+except:
 	pass
 
 def siteIsSetup(self):
@@ -27,8 +24,8 @@
 	except: pass
 	return False
 
-def strFilter(regex, replaceChar, str):
-	return re.sub(regex, replaceChar, str)
+def strFilter(regex, replaceChar, arg):
+	return re.sub(regex, replaceChar, arg)
 
 def validateDelSystem(self, request):
 	errors = list()
@@ -74,6 +71,8 @@
 
 	try:
 		user = self.portal_membership.getMemberById(userId)
+		if not user:
+			raise Exception, 'user %s does not exist' % userId
 	except:
 		return (False, {'errors': [ 'No such user: \"' + userId + '\"' ] })
 
@@ -531,7 +530,7 @@
 						i[1].manage_setLocalRoles(userId, roles)
 						messages.append('Added permission for ' + userId + ' for cluster ' + i[0])
 				except:
-						errors.append('Failed to add permission for ' + userId + ' for cluster ' + i[0])
+					errors.append('Failed to add permission for ' + userId + ' for cluster ' + i[0])
 			else:
 				try:
 					if user.has_role('View', i[1]):
@@ -545,7 +544,7 @@
 
 						messages.append('Removed permission for ' + userId + ' for cluster ' + i[0])
 				except:
-						errors.append('Failed to remove permission for ' + userId + ' for cluster ' + i[0])
+					errors.append('Failed to remove permission for ' + userId + ' for cluster ' + i[0])
 
 	storage = self.restrictedTraverse(PLONE_ROOT + '/systems/storage/objectItems')('Folder')
 	if not '__SYSTEM' in request.form:
@@ -572,7 +571,7 @@
 						i[1].manage_setLocalRoles(userId, roles)
 						messages.append('Added permission for ' + userId + ' for system ' + i[0])
 				except:
-						errors.append('Failed to add permission for ' + userId + ' for system ' + i[0])
+					errors.append('Failed to add permission for ' + userId + ' for system ' + i[0])
 			else:
 				try:
 					if user.has_role('View', i[1]):
@@ -586,7 +585,7 @@
 
 						messages.append('Removed permission for ' + userId + ' for system ' + i[0])
 				except:
-						errors.append('Failed to remove permission for ' + userId + ' for system ' + i[0])
+					errors.append('Failed to remove permission for ' + userId + ' for system ' + i[0])
 
 	if len(errors) > 0:
 		returnCode = False
@@ -665,23 +664,25 @@
 ]
 
 def userAuthenticated(self):
-	if (isAdmin(self) or getSecurityManager().getUser().has_role('Authenticated', self.restrictedTraverse(PLONE_ROOT))):
-		return True
-
+	try:
+		if (isAdmin(self) or getSecurityManager().getUser().has_role('Authenticated', self.restrictedTraverse(PLONE_ROOT))):
+			return True
+	except Exception, e:
+		luci_log.debug_verbose('UA0: %s' % str(e)) 
 	return False
 
 def isAdmin(self):
 	try:
 		return getSecurityManager().getUser().has_role('Owner', self.restrictedTraverse(PLONE_ROOT))
-	except:
-		pass
+	except Exception, e:
+		luci_log.debug_verbose('IA0: %s' % str(e)) 
 	return False
 
 def userIsAdmin(self, userId):
 	try:
 		return self.portal_membership.getMemberById(userId).has_role('Owner', self.restrictedTraverse(PLONE_ROOT))
-	except:
-		pass
+	except Exception, e:
+		luci_log.debug_verbose('UIA0: %s: %s' % (userId, str(e)))
 	return False
 
 def homebaseControlPost(self, request):
@@ -698,15 +699,19 @@
 	if 'pagetype' in request.form:
 		pagetype = int(request.form['pagetype'])
 	else:
-		try: request.SESSION.set('checkRet', {})
-		except: pass
+		try:
+			request.SESSION.set('checkRet', {})
+		except:
+			pass
 		return homebasePortal(self, request, '.', '0')
 
 	try:
 		validatorFn = formValidators[pagetype - 1]
 	except:
-		try: request.SESSION.set('checkRet', {})
-		except: pass
+		try:
+			request.SESSION.set('checkRet', {})
+		except:
+			pass
 		return homebasePortal(self, request, '.', '0')
 
 	if validatorFn == validateAddClusterInitial or validatorFn == validateAddCluster:
@@ -913,71 +918,111 @@
 
 def getClusterSystems(self, clusterName):
 	if isAdmin(self):
-		return self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/' + clusterName + '/objectItems')('Folder')
+		try:
+			return self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/' + clusterName + '/objectItems')('Folder')
+		except Exception, e:
+			luci_log.debug_verbose('GCS0: %s: %s' % (clusterName, str(e)))
+			return None
 
 	try:
 		i = getSecurityManager().getUser()
 		if not i:
-			raise
-	except:
+			raise Exception, 'GCSMGU failed'
+	except Exception, e:
+		luci_log.debug_verbose('GCS1: %s: %s' % (clusterName, str(e)))
 		return None
 
-	csystems = self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/' + clusterName + '/objectItems')('Folder')
-	if not csystems:
+	try:
+		csystems = self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/' + clusterName + '/objectItems')('Folder')
+		if not csystems or len(csystems) < 1:
+			return None
+	except Exception, e:
+		luci_log.debug_verbose('GCS2: %s: %s' % (clusterName, str(e)))
 		return None
 
 	allowedCSystems = list()
 	for c in csystems:
-		if i.has_role('View', c[1]):
-			allowedCSystems.append(c)
-	return (c)
+		try:
+			if i.has_role('View', c[1]):
+				allowedCSystems.append(c)
+		except Exception, e:
+			luci_log.debug_verbose('GCS3: %s: %s: %s' \
+				% (clusterName, c[0], str(e)))
+
+	return allowedCSystems
 
 def getClusters(self):
 	if isAdmin(self):
-		return self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/objectItems')('Folder')
+		try:
+			return self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/objectItems')('Folder')
+		except Exception, e:
+			luci_log.debug_verbose('GC0: %s' % str(e))
+			return None
 	try:
 		i = getSecurityManager().getUser()
 		if not i:
-			raise
-	except:
+			raise Exception, 'GSMGU failed'
+	except Exception, e:
+		luci_log.debug_verbose('GC1: %s' % str(e))
 		return None
 
-	clusters = self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/objectItems')('Folder')
-	if not clusters:
+	try:
+		clusters = self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/objectItems')('Folder')
+		if not clusters or len(clusters) < 1:
+			return None
+	except Exception, e:
+		luci_log.debug_verbose('GC2: %s' % str(e))
 		return None
 
 	allowedClusters = list()
 	for c in clusters:
-		if i.has_role('View', c[1]):
-			allowedClusters.append(c)
+		try:
+			if i.has_role('View', c[1]):
+				allowedClusters.append(c)
+		except Exception, e:
+			luci_log.debug_verbose('GC3: %s: %s' % (c[0], str(e)))
 
 	return allowedClusters
 
 def getStorage(self):
 	if isAdmin(self):
-		return self.restrictedTraverse(PLONE_ROOT + '/systems/storage/objectItems')('Folder')
+		try:
+			return self.restrictedTraverse(PLONE_ROOT + '/systems/storage/objectItems')('Folder')
+		except Exception, e:
+			luci_log.debug_verbose('GS0: %s' % str(e))
+			return None
+
 	try:
 		i = getSecurityManager().getUser()
 		if not i:
-			return None
-	except:
+			raise Exception, 'GSMGU failed'
+	except Exception, e:
+		luci_log.debug_verbose('GS1: %s' % str(e))
 		return None
 
-	storage = self.restrictedTraverse(PLONE_ROOT + '/systems/storage/objectItems')('Folder')
-	if not storage:
+	try:
+		storage = self.restrictedTraverse(PLONE_ROOT + '/systems/storage/objectItems')('Folder')
+		if not storage or len(storage) < 1:
+			return None
+	except Exception, e:
+		luci_log.debug_verbose('GS2: %s' % str(e))
 		return None
 
 	allowedStorage = list()
 	for s in storage:
-		if i.has_role('View', s[1]):
-			allowedStorage.append(s)
+		try:
+			if i.has_role('View', s[1]):
+				allowedStorage.append(s)
+		except Exception, e:
+			luci_log.debug_verbose('GS3: %s' % str(e))
 
 	return allowedStorage
 
 def createSystem(self, host, passwd):
 	try:
 		exists = self.restrictedTraverse(PLONE_ROOT +'/systems/storage/' + host)
-		return 'Storage system \"' + host + '\" is already managed.'
+		luci_log.debug_verbose('CS0: %s already exists' % host)
+		return 'Storage system %s is already managed' % host
 	except:
 		pass
 
@@ -986,49 +1031,52 @@
 		if rc is None:
 			raise Exception, 'unknown error'
 	except Exception, e:
+		luci_log.debug_verbose('CS1: %s: %s' % (host, str(e)))
 		return 'Unable to establish a connection to the ricci agent on %s: %s' \
 			% (host, str(e))
 
 	try:
 		if not rc.authed():
 			rc.auth(passwd)
-	except:
-		return 'Unable to communicate with the ricci agent on \"' + host + '\" for authentication'
+	except Exception, e:
+		luci_log.debug_verbose('CS2: %s: %s' % (host, str(e)))
+		return 'Unable to communicate with the ricci agent on %s for authentication' % host
 
 	try:
 		i = rc.authed()
-	except:
-		return 'Unable to authenticate to the ricci agent on \"' + host + '\"'
+	except Exception, e:
+		luci_log.debug_verbose('CS3 %s: %s' % (host, str(e)))
+		return 'Unable to authenticate to the ricci agent on %s' % host
 
 	if i != True:
-		return 'Authentication for storage system \"' + host + '\" failed'
-
-#	rhost = rc.system_name()
-#	if rhost and rhost != host and rhost[:9] != 'localhost' and rhost[:5] != '127.0':
-#		host = str(rhost)
+		return 'Authentication for storage system %s failed' % host
 
 	try:
-		exists = self.restrictedTraverse(PLONE_ROOT +'/systems/storage/' + host)
-		return 'Storage system \"' + host + '\" is already managed.'
+		exists = self.restrictedTraverse(PLONE_ROOT + '/systems/storage/' + host)
+		luci_log.debug_verbose('CS4 %s already exists' % host)
+		return 'Storage system %s is already managed' % host
 	except:
 		pass
 
 	try:
 		ssystem = self.restrictedTraverse(PLONE_ROOT + '/systems/storage/')
 	except Exception, e:
-		return 'Unable to create storage system %s: %s' % (host, str(e))
+		luci_log.debug_verbose('CS5 %s: %s' % (host, str(e)))
+		return 'Unable to create storage system %s: %s' % host
 
 	try:
 		ssystem.manage_addFolder(host, '__luci__:system')
 		newSystem = self.restrictedTraverse(PLONE_ROOT + '/systems/storage/' + host)
 	except Exception, e:
-		return 'Unable to create storage system %s: %s' % (host, str(e))
+		luci_log.debug_verbose('CS6 %s: %s' % (host, str(e)))
+		return 'Unable to create DB entry for storage system %s' % host
 
 	try:
 		newSystem.manage_acquiredPermissions([])
-		newSystem.manage_role('View', ['Access contents information','View'])
+		newSystem.manage_role('View', ['Access contents information', 'View'])
 	except Exception, e:
-		return 'Unable to set permissions on storage system %s: %s' % (host, str(e))
+		luci_log.debug_verbose('CS7 %s: %s' % (host, str(e)))
+		return 'Unable to set permissions on storage system %s' % host
 
 	return None
 
@@ -1036,26 +1084,27 @@
 	try:
 		sessionData = request.SESSION.get('checkRet')
 		nodeUnauth(sessionData['requestResults']['nodeList'])
-	except:
-		pass
+	except Exception, e:
+		luci_log.debug_verbose('AMC0: %s' % str(e))
 
 def manageCluster(self, clusterName, nodeList):
 	clusterName = str(clusterName)
-	luci_log.debug_verbose('manageCluster for %s' % clusterName)
 
 	try:
 		clusters = self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/')
 		if not clusters:
 			raise Exception, 'cannot find the cluster entry in the DB'
-	except:
+	except Exception, e:
 		nodeUnauth(nodeList)
-		return 'Unable to create cluster \"' + clusterName + '\": the cluster directory is missing.'
+		luci_log.debug_verbose('MC0: %s: %s' % (clusterName, str(e)))
+		return 'Unable to create cluster %s: the cluster directory is missing.' % clusterName
 
 	try:
 		newCluster = self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/' + clusterName)
 		if newCluster:
 			nodeUnauth(nodeList)
-			return 'A cluster named \"' + clusterName + '\" is already managed by Luci'
+			luci_log.debug_verbose('MC1: cluster %s: already exists' % clusterName)
+			return 'A cluster named %s is already managed by Luci' % clusterName
 	except:
 		pass
 
@@ -1063,20 +1112,22 @@
 		clusters.manage_addFolder(clusterName, '__luci__:cluster')
 		newCluster = self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/' + clusterName)
 		if not newCluster:
-			raise Exception, 'unable to find cluster folder for %s' % clusterName
+			raise Exception, 'unable to create the cluster DB entry for %s' % clusterName
 	except Exception, e:
 		nodeUnauth(nodeList)
+		luci_log.debug_verbose('MC2: %s: %s' % (clusterName, str(e)))
 		return 'Unable to create cluster %s: %s' % (clusterName, str(e))
 
 	try:
 		newCluster.manage_acquiredPermissions([])
-		newCluster.manage_role('View', ['Access Contents Information','View'])
+		newCluster.manage_role('View', ['Access Contents Information', 'View'])
 	except Exception, e:
+		luci_log.debug_verbose('MC3: %s: %s' % (clusterName, str(e)))
 		nodeUnauth(nodeList)
 		try:
 			clusters.manage_delObjects([clusterName])
-		except:
-			pass
+		except Exception, e:
+			luci_log.debug_verbose('MC4: %s: %s' % (clusterName, str(e)))
 		return 'Unable to set permissions on new cluster: %s: %s' % (clusterName, str(e))
 
 	try:
@@ -1084,14 +1135,14 @@
 		if not cluster_os:
 			raise KeyError, 'Cluster OS is blank'
 	except KeyError, e:
-		luci_log.debug_verbose('Warning adding cluster %s: %s' \
-			% (clusterName, str(e)))
+		luci_log.debug_verbose('MC5: %s: %s' % (clusterName, str(e)))
 		cluster_os = 'rhel5'
 
 	try:
 		newCluster.manage_addProperty('cluster_os', cluster_os, 'string')
-	except:
-		pass # we were unable to set the OS property string on this cluster
+	except Exception, e:
+		luci_log.debug_verbose('MC5: %s: %s: %s' \
+			% (clusterName, cluster_os, str(e)))
 
 	for i in nodeList:
 		#if 'ricci_host' in i:
@@ -1103,15 +1154,19 @@
 			newCluster.manage_addFolder(host, '__luci__:csystem:' + clusterName)
 			newSystem = self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/' + clusterName + '/' + host)
 			if not newSystem:
-				raise Exception, 'unable to create cluster system DB entry'
+				raise Exception, 'unable to create cluster system DB entry for node %s' % host
 			newSystem.manage_acquiredPermissions([])
 			newSystem.manage_role('View', [ 'Access contents information' , 'View' ])
 		except Exception, e:
 			nodeUnauth(nodeList)
 			try:
 				clusters.manage_delObjects([clusterName])
-			except:
-				pass
+			except Exception, e:
+				luci_log.debug_verbose('MC6: %s: %s: %s' \
+					% (clusterName, host, str(e)))
+
+			luci_log.debug_verbose('MC7: %s: %s: %s' \
+				% (clusterName, host, str(e)))
 			return 'Unable to create cluster node %s for cluster %s: %s' \
 				% (host, clusterName, str(e))
 
@@ -1120,6 +1175,7 @@
 		if not ssystem:
 			raise Exception, 'The storage DB entry is missing'
 	except Exception, e:
+		luci_log.debug_verbose('MC8: %s: %s: %s' % (clusterName, host, str(e)))
 		return 'Error adding storage node %s: %s' % (host, str(e))
 
 	# Only add storage systems if the cluster and cluster node DB
@@ -1134,22 +1190,25 @@
 			# It's already there, as a storage system, no problem.
 			exists = self.restrictedTraverse(PLONE_ROOT + '/systems/storage/' + host)
 			continue
-		except: pass
+		except:
+			pass
 
 		try:
 			ssystem.manage_addFolder(host, '__luci__:system')
 			newSystem = self.restrictedTraverse(PLONE_ROOT + '/systems/storage/' + host)
 			newSystem.manage_acquiredPermissions([])
 			newSystem.manage_role('View', [ 'Access contents information' , 'View' ])
-		except: pass
+		except Exception, e:
+			luci_log.debug_verbose('MC9: %s: %s: %s' % (clusterName, host, str(e)))
 
 def createClusterSystems(self, clusterName, nodeList):
 	try:
 		clusterObj = self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/' + clusterName)
 		if not clusterObj:
 			raise Exception, 'cluster %s DB entry is missing' % clusterName
-	except:
+	except Exception, e:
 		nodeUnauth(nodeList)
+		luci_log.debug_verbose('CCS0: %s: %s' % (clusterName, str(e)))
 		return 'No cluster named \"' + clusterName + '\" is managed by Luci'
 
 	for i in nodeList:
@@ -1168,6 +1227,7 @@
 			newSystem.manage_role('View', [ 'Access contents information' , 'View' ])
 		except Exception, e:
 			nodeUnauth(nodeList)
+			luci_log.debug_verbose('CCS1: %s: %s: %s' % (clusterName, host, str(e)))
 			return 'Unable to create cluster node %s for cluster %s: %s' \
 				% (host, clusterName, str(e))
 
@@ -1176,8 +1236,7 @@
 		if not ssystem:
 			raise Exception, 'storage DB entry is missing'
 	except Exception, e:
-		luci_log.debug_verbose('Error: adding storage DB node for %s: %s' \
-			% (host, str(e)))
+		luci_log.debug_verbose('CCS2: %s: %s' % (clusterName, host, str(e)))
 		return
 
 	# Only add storage systems if the and cluster node DB
@@ -1192,14 +1251,16 @@
 			# It's already there, as a storage system, no problem.
 			exists = self.restrictedTraverse(PLONE_ROOT + '/systems/storage/' + host)
 			continue
-		except: pass
+		except:
+			pass
 
 		try:
 			ssystem.manage_addFolder(host, '__luci__:system')
 			newSystem = self.restrictedTraverse(PLONE_ROOT + '/systems/storage/' + host)
 			newSystem.manage_acquiredPermissions([])
 			newSystem.manage_role('View', [ 'Access contents information' , 'View' ])
-		except: pass
+		except Exception, e:
+			luci_log.debug_verbose('CCS3: %s: %s' % (clusterName, host, str(e)))
 
 def delSystem(self, systemName):
 	try:
@@ -1207,6 +1268,7 @@
 		if not ssystem:
 			raise Exception, 'storage DB entry is missing'
 	except Exception, e:
+		luci_log.debug_verbose('delSystem0: %s: %s' % (systemName, str(e)))
 		return 'Unable to find storage system %s: %s' % (systemName, str(e))
 
 	try:
@@ -1216,27 +1278,33 @@
 	except Exception, e:
 		try:
 			ssystem.manage_delObjects([systemName])
-		except:
-			return 'Unable to delete the storage system \"' + systemName + '\"'
-		luci_log.debug_verbose('ricci error for %s: %s' % (systemName, str(e)))
+		except Exception, e:
+			luci_log.debug_verbose('delSystem1: %s: %s' % (systemName, str(e)))
+			return 'Unable to delete the storage system %s' % systemName
+		luci_log.debug_verbose('delSystem2: %s: %s' % (systemName, str(e)))
 		return
 
 	# Only unauthenticate if the system isn't a member of
 	# a managed cluster.
 	cluster_info = rc.cluster_info()
 	if not cluster_info[0]:
-		try: rc.unauth()
-		except: pass
+		try:
+			rc.unauth()
+		except:
+			pass
 	else:
 		try:
 			newSystem = self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/' + cluster_info[0] + '/' + systemName)
 		except:
-			try: rc.unauth()
-			except: pass
+			try:
+				rc.unauth()
+			except:
+				pass
 
 	try:
 		ssystem.manage_delObjects([systemName])
 	except Exception, e:
+		luci_log.debug_verbose('delSystem3: %s: %s' % (systemName, str(e)))
 		return 'Unable to delete storage system %s: %s' \
 			% (systemName, str(e))
 
@@ -1244,9 +1312,10 @@
 	try:
 		clusters = self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/')
 		if not clusters:
-			raise
-	except:
-		return 'Unable to find cluster \"' + clusterName + '\"'
+			raise Exception, 'clusters DB entry is missing'
+	except Exception, e:
+		luci_log.debug_verbose('delCluster0: %s' % str(e))
+		return 'Unable to find cluster %s' % clusterName
 
 	err = delClusterSystems(self, clusterName)
 	if err:
@@ -1254,26 +1323,28 @@
 
 	try:
 		clusters.manage_delObjects([clusterName])
-	except:
-		return 'Unable to delete cluster \"' + clusterName + '\"'
+	except Exception, e:
+		luci_log.debug_verbose('delCluster1: %s' % str(e))
+		return 'Unable to delete cluster %s' % clusterName
 
 def delClusterSystem(self, cluster, systemName):
 	try:
 		if not self.restrictedTraverse(PLONE_ROOT + '/systems/storage/' + systemName):
 			raise
 	except:
+		# It's not a storage system, so unauthenticate.
 		try:
 			rc = RicciCommunicator(systemName)
 			rc.unauth()
 		except Exception, e:
-			luci_log.debug_verbose('ricci error for %s: %s' \
+			luci_log.debug_verbose('delClusterSystem0: ricci error for %s: %s' \
 				% (systemName, str(e)))
 
 	try:
 		cluster.manage_delObjects([systemName])
 	except Exception, e:
 		err_str = 'Error deleting cluster object %s: %s' % (systemName, str(e))
-		luci_log.debug_verbose(err_str)
+		luci_log.debug_verbose('delClusterSystem1: %s' % err_str)
 		return err_str
 
 def delClusterSystems(self, clusterName):
@@ -1285,7 +1356,7 @@
 	except Exception, e:
 		luci_log.debug_verbose('delCluSysterms: error for %s: %s' \
 			% (clusterName, str(e)))
-		return 'Unable to find any systems for cluster \"' + clusterName + '\"'
+		return 'Unable to find any systems for cluster %s' % clusterName
 
 	errors = ''
 	for i in csystems:
@@ -1297,34 +1368,65 @@
 def getDefaultUser(self, request):
 	try:
 		user = request.form['userList']
-	except:
+	except KeyError, e:
 		try:
 			user = request['user']
 		except:
 			try:
-				user = self.portal_membership.listMembers()[0].getUserName()
-			except:
+				members = list()
+				members.extend(self.portal_membership.listMembers())
+				members.sort()
+				user = members[0].getUserName()
+			except Exception, e:
+				luci_log.debug_verbose('getDefaultUser0: %s' % str(e))
 				user = None
 
+	if not user:
+		luci_log.debug_verbose('getDefaultUser1: user is none')
 	return user
 
 def getUserPerms(self):
 	perms = {}
-	for i in self.portal_membership.listMembers():
+
+	try:
+		members = list()
+		members.extend(self.portal_membership.listMembers())
+		if len(members) < 1:
+			raise Exception, 'no portal members exist'
+		members.sort()
+	except Exception, e:
+		luci_log.debug_verbose('getUserPerms0: %s' % str(e))
+		return {}
+
+	for i in members:
 		userName = i.getUserName()
 
 		perms[userName] = {}
 		perms[userName]['cluster'] = {}
 		perms[userName]['storage'] = {}
 
-		clusters = self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/objectItems')('Folder')
-		storage = self.restrictedTraverse(PLONE_ROOT + '/systems/storage/objectItems')('Folder')
+		try:
+			clusters = self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/objectItems')('Folder')
+			storage = self.restrictedTraverse(PLONE_ROOT + '/systems/storage/objectItems')('Folder')
+		except Exception, e:
+			luci_log.debug_verbose('getUserPerms1: user %s: %s' % (userName, str(e)))
+			continue
 
 		for c in clusters:
-			perms[userName]['cluster'][c[0]] = i.has_role('View', c[1])
-
+			try:
+				perms[userName]['cluster'][c[0]] = i.has_role('View', c[1])
+			except Exception, e:
+				luci_log.debug_verbose('getUserPerms2: user %s, obj %s: %s' \
+					% (userName, c[0], str(e)))
+				continue
+				
 		for s in storage:
-			perms[userName]['storage'][s[0]] = i.has_role('View', s[1])
+			try:
+				perms[userName]['storage'][s[0]] = i.has_role('View', s[1])
+			except Exception, e:
+				luci_log.debug_verbose('getUserPerms2: user %s, obj %s: %s' \
+					% (userName, s[0], str(e)))
+				continue
 
 	return perms
 
@@ -1397,39 +1499,52 @@
 def getClusterNode(self, nodename, clustername):
 	try:
 		cluster_node = self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/' + str(clustername) + '/' + str(nodename))
+		if not cluster_node:
+			raise Exception, 'cluster node is none'
 		return cluster_node
-	except:
+	except Exception, e:
+		luci_log.debug_verbose('getClusterNode0: %s %s: %s' \
+			% (nodename, clustername, str(e)))
 		return None
 
 def getStorageNode(self, nodename):
 	try:
 		storage_node = self.restrictedTraverse(PLONE_ROOT + '/systems/storage/' + '/' + str(nodename))
+		if not storage_node:
+			raise Exception, 'storage node is none'
 		return storage_node
-	except:
+	except Exception, e:
+		luci_log.debug_verbose('getStorageNode0: %s: %s' % (nodename, str(e)))
 		return None
 
 def testNodeFlag(node, flag_mask):
 	try:
 		flags = node.getProperty('flags')
+		if flags is None:
+			return False
 		return flags & flag_mask != 0
-	except:
-		pass
+	except Exception, e:
+		luci_log.debug_verbose('testNodeFlag0: %s' % str(e))
 	return False
 
 def setNodeFlag(node, flag_mask):
 	try:
 		flags = node.getProperty('flags')
+		if flags is None:
+			flags = 0
 		node.manage_changeProperties({ 'flags': flags | flag_mask })
 	except:
 		try:
 			node.manage_addProperty('flags', flag_mask, 'int')
-		except:
-			pass
+		except Exception, e:
+			luci_log.debug_verbose('setNodeFlag0: %s' % str(e))
 
 def delNodeFlag(node, flag_mask):
 	try:
 		flags = node.getProperty('flags')
+		if flags is None:
+			return
 		if flags & flag_mask != 0:
 			node.manage_changeProperties({ 'flags': flags & ~flag_mask })
-	except:
-		pass
+	except Exception, e:
+		luci_log.debug_verbose('delNodeFlag0: %s' % str(e))



             reply	other threads:[~2006-11-02  3:17 UTC|newest]

Thread overview: 185+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-02  3:17 rmccabe [this message]
  -- strict thread matches above, loose matches on Subject: below --
2008-07-17 16:36 [Cluster-devel] conga/luci/site/luci/Extensions cluster_adapte rmccabe
2008-04-18 20:37 rmccabe
2007-12-12 15:45 rmccabe
2007-08-23 19:00 rmccabe
2007-08-22 20:57 rmccabe
2007-05-03 19:51 rmccabe
2007-04-02 16:35 rmccabe
2007-04-02 15:56 rmccabe
2007-03-27  2:03 rmccabe
2007-03-16  3:19 rmccabe
2007-03-16  3:19 rmccabe
2007-03-16  3:19 rmccabe
2007-03-13  3:07 rmccabe
2007-03-13  3:06 rmccabe
2007-03-12  5:47 rmccabe
2007-03-12  5:46 rmccabe
2007-03-12  5:46 rmccabe
2007-03-06 22:48 rmccabe
2007-03-01 20:22 rmccabe
2007-03-01 20:22 rmccabe
2007-03-01 20:22 rmccabe
2007-02-13 19:50 rmccabe
2007-02-13 19:50 rmccabe
2007-02-12 20:25 rmccabe
2007-02-12 20:24 rmccabe
2007-02-07 22:00 rmccabe
2007-02-07 21:30 rmccabe
2007-02-05 19:56 rmccabe
2007-01-31 23:45 rmccabe
2007-01-31 19:28 rmccabe
2007-01-31 18:50 rmccabe
2007-01-30 21:41 jparsons
2007-01-30 21:21 jparsons
2007-01-30 21:05 jparsons
2007-01-29 23:30 rmccabe
2007-01-26 19:35 rmccabe
2007-01-18  2:48 rmccabe
2007-01-17 22:26 rmccabe
2007-01-17 22:14 rmccabe
2007-01-10 23:33 jparsons
2007-01-10 22:45 rmccabe
2007-01-10 20:06 rmccabe
2006-12-20 20:40 jparsons
2006-12-14 21:37 rmccabe
2006-12-14 17:03 rmccabe
2006-12-08 23:02 rmccabe
2006-11-30 20:12 jparsons
2006-11-27 21:06 rmccabe
2006-11-27 21:05 rmccabe
2006-11-27 18:15 rmccabe
2006-11-20 23:32 rmccabe
2006-11-20 15:05 jparsons
2006-11-17  5:50 rmccabe
2006-11-17  5:48 rmccabe
2006-11-10 18:18 rmccabe
2006-11-10 17:59 rmccabe
2006-11-09 22:30 rmccabe
2006-11-09 14:17 rmccabe
2006-11-08 21:42 rmccabe
2006-11-08 15:52 jparsons
2006-11-07 20:14 jparsons
2006-11-07 20:13 jparsons
2006-11-07  2:36 jparsons
2006-11-07  1:32 jparsons
2006-11-06 23:55 rmccabe
2006-11-05  0:59 rmccabe
2006-11-03 21:13 jparsons
2006-11-03  1:24 rmccabe
2006-11-03  1:08 rmccabe
2006-11-02 20:58 rmccabe
2006-11-02 20:45 rmccabe
2006-11-02 20:41 rmccabe
2006-10-31 17:18 rmccabe
2006-10-31  0:16 rmccabe
2006-10-30 22:52 rmccabe
2006-10-30 20:43 jparsons
2006-10-27  1:11 rmccabe
2006-10-25  0:43 rmccabe
2006-10-24 14:08 rmccabe
2006-10-23 20:47 jparsons
2006-10-20 22:09 rmccabe
2006-10-20 21:59 rmccabe
2006-10-19 14:57 rmccabe
2006-10-18 23:12 rmccabe
2006-10-18 19:16 rmccabe
2006-10-16 21:01 rmccabe
2006-10-16 20:51 jparsons
2006-10-16 19:17 jparsons
2006-10-16  5:28 rmccabe
2006-10-16  4:54 rmccabe
2006-10-16  4:51 rmccabe
2006-10-13 22:56 rmccabe
2006-10-12 22:11 jparsons
2006-10-12 21:00 kupcevic
2006-10-12 20:54 jparsons
2006-10-12 20:48 jparsons
2006-10-12 19:40 rmccabe
2006-10-12 17:27 jparsons
2006-10-12 17:08 jparsons
2006-10-12 15:50 jparsons
2006-10-12 15:45 jparsons
2006-10-12  0:04 jparsons
2006-10-11 23:56 jparsons
2006-10-11 23:11 jparsons
2006-10-11 23:08 rmccabe
2006-10-11 22:37 jparsons
2006-10-11 20:58 jparsons
2006-10-11 17:43 jparsons
2006-10-11 17:29 rmccabe
2006-10-11 16:35 jparsons
2006-10-11 16:25 jparsons
2006-10-11 16:18 rmccabe
2006-10-10 21:33 kupcevic
2006-10-09 20:21 rmccabe
2006-10-04 16:20 rmccabe
2006-10-04 16:05 jparsons
2006-10-04 15:11 jparsons
2006-10-02 22:30 rmccabe
2006-10-02 21:42 rmccabe
2006-10-02 21:09 rmccabe
2006-10-02 20:53 rmccabe
2006-09-28 22:04 rmccabe
2006-09-28 20:10 rmccabe
2006-09-27 18:46 rmccabe
2006-09-27 16:18 jparsons
2006-09-27 15:51 jparsons
2006-09-27 15:35 jparsons
2006-09-25 22:59 rmccabe
2006-09-22 18:24 rmccabe
2006-08-30 22:59 rmccabe
2006-08-22 17:46 jparsons
2006-08-22 17:41 jparsons
2006-08-16 23:40 jparsons
2006-08-16 21:56 jparsons
2006-08-16 21:54 jparsons
2006-08-16 21:51 jparsons
2006-08-16 19:14 rmccabe
2006-08-16 16:10 jparsons
2006-08-14 15:12 jparsons
2006-08-13 19:38 jparsons
2006-08-13 19:37 jparsons
2006-08-13 18:36 jparsons
2006-08-13 16:32 jparsons
2006-08-13 16:15 jparsons
2006-08-13 15:02 jparsons
2006-08-13 14:57 jparsons
2006-08-13 13:48 jparsons
2006-08-12 21:13 jparsons
2006-08-12 20:31 jparsons
2006-08-12 18:22 jparsons
2006-08-12 17:53 jparsons
2006-08-11  0:29 jparsons
2006-08-10 23:06 shuennek
2006-08-10 16:50 jparsons
2006-08-10 14:16 jparsons
2006-08-09 22:05 jparsons
2006-08-09 21:48 jparsons
2006-08-03 13:37 jparsons
2006-08-02 18:59 rmccabe
2006-08-02 17:25 rmccabe
2006-08-01 15:29 jparsons
2006-08-01 15:25 jparsons
2006-08-01 15:20 jparsons
2006-08-01 15:13 jparsons
2006-08-01 15:04 jparsons
2006-07-31 18:21 rmccabe
2006-07-28 19:03 jparsons
2006-07-28 18:57 jparsons
2006-07-28 18:40 jparsons
2006-07-28 14:16 jparsons
2006-07-28 14:02 jparsons
2006-07-28 11:46 jparsons
2006-07-27 16:34 jparsons
2006-07-27 15:53 rmccabe
2006-07-25 20:16 jparsons
2006-07-25 20:01 jparsons
2006-07-25  0:56 jparsons
2006-07-24 21:51 jparsons
2006-07-24 21:13 jparsons
2006-07-24 19:50 jparsons
2006-07-19 22:28 rmccabe
2006-07-19 21:38 rmccabe
2006-07-19 20:57 rmccabe
2006-07-19 20:19 rmccabe

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=20061102031708.7216.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 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).