[Cluster-devel] conga/luci/site/luci/Extensions FenceHandler.p ...

rmccabe at sourceware.org rmccabe at sourceware.org
Fri Sep 21 03:02:48 UTC 2007


CVSROOT:	/cvs/cluster
Module name:	conga
Changes by:	rmccabe at sourceware.org	2007-09-21 03:02:47

Modified files:
	luci/site/luci/Extensions: FenceHandler.py cluster_adapters.py 
	luci/site/luci/Extensions/ClusterModel: ModelBuilder.py 

Log message:
	Factor fence addition and deletion out of the luci code and stuff it into the cluster model code.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/FenceHandler.py.diff?cvsroot=cluster&r1=1.23&r2=1.24
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.271&r2=1.272
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py.diff?cvsroot=cluster&r1=1.10&r2=1.11

--- conga/luci/site/luci/Extensions/FenceHandler.py	2007/09/20 22:37:32	1.23
+++ conga/luci/site/luci/Extensions/FenceHandler.py	2007/09/21 03:02:46	1.24
@@ -51,13 +51,6 @@
 	ILLEGAL_CHARS = re.compile(':| ')
 	return ILLEGAL_CHARS.sub('_', name)
 
-def check_unique_fd_name(model, name):
-	fds = model.getFenceDevices()
-	for fd in fds:
-		if fd.getName() == name:
-			return False
-	return True
-
 def validateNewFenceDevice(form, model):
 	from ClusterModel.FenceDevice import FenceDevice
 	fencedev = FenceDevice()
@@ -65,8 +58,7 @@
 	try:
 		ret = validate_fencedevice(form, model, fencedev)
 		if len(ret) < 1:
-			fencedevptr = model.getFenceDevicePtr()
-			fencedevptr.addChild(fencedev)
+			model.addFenceDevice(fencedev)
 			model.setModified(True)
 			return (FD_VAL_SUCCESS, fencedev.getAttribute('name'))
 	except Exception, e:
@@ -88,11 +80,7 @@
 
 	fencedev = None
 	try:
-		fencedevs = model.getFenceDevices()
-		for fd in fencedevs:
-			if fd.getName().strip() == old_fence_name:
-				fencedev = fd
-				break
+		fencedev = model.getFenceDeviceByName(old_fence_name)
 		if fencedev is None:
 			raise Exception, 'fencedev is None'
 	except Exception, e:
@@ -805,12 +793,13 @@
 				raise Exception, 'blank'
 		except Exception, e:
 			return [ FD_PROVIDE_NAME ]
+
 		if old_fence_name != fence_name:
-			if check_unique_fd_name(model, fence_name) is False:
+			if model.getFenceDeviceByName(fence_name) is not None:
 				return [ FD_PROVIDE_NAME ]
 			name_change = True
 	else:
-		if check_unique_fd_name(model, fence_name) is False:
+		if model.getFenceDeviceByName(fence_name) is not None:
 			return [ FD_PROVIDE_NAME ]
 
 	try:
--- conga/luci/site/luci/Extensions/cluster_adapters.py	2007/09/20 22:37:32	1.271
+++ conga/luci/site/luci/Extensions/cluster_adapters.py	2007/09/21 03:02:47	1.272
@@ -1794,34 +1794,23 @@
 
 	fencedev_name = fvar['orig_name']
 	if fencedev_name is None:
-		return (False, {'errors': ['No device name in form submission']})
+		return (False, {'errors': ['No fence device name in form submission']})
 
-	# XXX - FIXME: use new model calls to do this.
-	fdev_to_delete = None
-	fdevs = model.getFenceDevices()
-	for fdev in fdevs:
-		if fdev.getName().strip() == fencedev_name:
-			fdev_to_delete = fdev
-			break
-
-	if fdev_to_delete is None:
-		if LUCI_DEBUG_MODE is True:
-			luci_log.debug_verbose('DFD3: Could not find fence device "%s" in model' % fencedev_name)
-		return (False, {'errors': ['Could not find fence device "%s" in model' % fencedev_name ]})
-
-	fdev_ptr = model.getFenceDevicePtr()
 	try:
-		fdev_ptr.removeChild(fdev_to_delete)
-	except:
-		errors.append('Fence device "%s" could not be removed from configuration' % fencedev_name)
-		return (False, { 'errors': errors })
-
-	try:
-		model.removeFenceInstancesForFenceDevice(fencedev_name)
+		fdev = model.getFenceDeviceByName(fencedev_name)
+		if fdev:
+			if model.deleteFenceDevice(fdev) is not True:
+				raise Exception, 'failed to remove %s' % fdev.getName()
+			model.removeFenceInstancesForFenceDevice(fencedev_name)
+		else:
+			raise Exception, 'no fence device named "%s" was found' \
+					% fencedev_name
 	except Exception, e:
 		if LUCI_DEBUG_MODE is True:
-			luci_log.debug_verbose('DFD4: error removing %s: %r %s' \
+			luci_log.debug_verbose('DFD3: %s: %r %s' \
 				% (fencedev_name, e, str(e)))
+		return (False, { 'errors': [ 'Error removing fence device %s: %s' \
+										% (fencedev_name, str(e)) ]})
 
 	ret = propagateClusterConfAsync(self, model, None, CLUSTER_CONFIG,
 			'Removing fence device "%s"' % fencedev_name)
--- conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py	2007/09/20 22:37:32	1.10
+++ conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py	2007/09/21 03:02:47	1.11
@@ -335,9 +335,10 @@
 
   def getFenceDeviceByName(self, name):
     device = filter(lambda x: x.getName() == name, self.getFenceDevices())
-    if len(device) > 1:
-      raise Exception, '%d fence devices named %s exist' % (len(device), name)
-    if len(device) < 1:
+    num_fdevs = len(device)
+    if num_fdevs > 1:
+      raise Exception, '%d fence devices named %s exist' % (num_fdevs, name)
+    if num_fdevs < 1:
       return None
     return device[0]
       
@@ -621,6 +622,9 @@
       self.cluster_ptr.removeChild(self.fence_xvmd_ptr)
       self.fence_xvmd_ptr = None
 
+  def addFenceDevice(self, device):
+    self.fencedevices_ptr.addChild(device)
+
   def deleteFenceDevice(self, device):
     if self.fencedevices_ptr is None or device is None:
       return False




More information about the Cluster-devel mailing list