cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2006-11-29 22:33 kupcevic
  0 siblings, 0 replies; 21+ messages in thread
From: kupcevic @ 2006-11-29 22:33 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL5
Changes by:	kupcevic at sourceware.org	2006-11-29 22:33:51

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: HelperFunctions.py 

Log message:
	luci storage: fix bytes->TB conversion

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.7&r2=1.45.2.8
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/HelperFunctions.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.4&r2=1.4.2.1

--- conga/conga.spec.in.in	2006/11/17 20:46:02	1.45.2.7
+++ conga/conga.spec.in.in	2006/11/29 22:33:50	1.45.2.8
@@ -289,7 +289,7 @@
 XXXXXXXXXXXXXXXXXXX UPDATE NOT RELEASED YET XXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
-- 
+- luci storage: fix bytes->TB conversion
 
 
 
--- conga/luci/site/luci/Extensions/HelperFunctions.py	2006/10/06 22:08:13	1.4
+++ conga/luci/site/luci/Extensions/HelperFunctions.py	2006/11/29 22:33:50	1.4.2.1
@@ -133,6 +133,6 @@
 
 def convert_bytes(bytes, units):
     c = int(bytes) / get_units_multiplier(units)
-    c = str(c)
+    c = repr(c)
     c = c[:c.find('.') + 3]
     return c



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2006-12-14  0:01 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2006-12-14  0:01 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL5
Changes by:	rmccabe at sourceware.org	2006-12-14 00:01:01

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: ricci_bridge.py 

Log message:
	fix for bz219522

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.15&r2=1.45.2.16
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ricci_bridge.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.30.2.13&r2=1.30.2.14

--- conga/conga.spec.in.in	2006/12/13 20:27:40	1.45.2.15
+++ conga/conga.spec.in.in	2006/12/14 00:01:00	1.45.2.16
@@ -291,8 +291,7 @@
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
 - Fixed bz214989 (Package download not working for Conga during cluster creation)
-- 
-
+- Fixed bz219522 (Restarting a cluster via luci web gui = UnboundLocalError - local variable 'e' referenced before assignment)
 
 * Tue Dec 12 2006 Stanko Kupcevic <kupcevic@redhat.com> 0.8-26
 - luci storage: fix bytes->TB conversion
--- conga/luci/site/luci/Extensions/ricci_bridge.py	2006/12/12 13:26:23	1.30.2.13
+++ conga/luci/site/luci/Extensions/ricci_bridge.py	2006/12/14 00:01:00	1.30.2.14
@@ -38,8 +38,7 @@
 		return (True, 'completed sucessfully')
 
 	# Error
-	luci_log.debug_verbose('checkBatch2: %s: %s: %s' \
-		% (str(code), rc.hostname(), str(e)))
+	luci_log.debug_verbose('checkBatch2: %s: %s' % (str(code), rc.hostname()))
 	return (-1, err_msg)
 
 def addClusterNodeBatch(os_str,



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2007-05-02  2:36 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2007-05-02  2:36 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL5
Changes by:	rmccabe at sourceware.org	2007-05-02 02:36:06

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: FenceHandler.py cluster_adapters.py 

Log message:
	Fix 238655: conga does not set the "nodename" attribute for manual fencing

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.35&r2=1.45.2.36
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/FenceHandler.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.4.2.4&r2=1.4.2.5
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.120.2.28&r2=1.120.2.29

--- conga/conga.spec.in.in	2007/04/30 18:47:32	1.45.2.35
+++ conga/conga.spec.in.in	2007/05/02 02:36:06	1.45.2.36
@@ -281,12 +281,11 @@
 
 
 %changelog
-
 * Mon Apr 30 2007 Ryan McCabe <rmccabe@redhat.com> 0.9.2-7
-
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXX UPDATE NOT RELEASED YET XXXXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+- Fixed bz238655 (conga does not set the "nodename" attribute for manual fencing)
 
 * Wed Apr 11 2007 Ryan McCabe <rmccabe@redhat.com> 0.9.2-5
 - Fixed bz225206 (Cluster cannot be deleted (from 'Manage Systems') - but no error results)
--- conga/luci/site/luci/Extensions/FenceHandler.py	2007/03/01 00:31:08	1.4.2.4
+++ conga/luci/site/luci/Extensions/FenceHandler.py	2007/05/02 02:36:06	1.4.2.5
@@ -29,7 +29,7 @@
 FI_PROVIDE_IPADDRESS = 'An IP address must be provided for this Fence'
 FI_PROVIDE_ELPAN = 'A LPAN value must be provided for this Egenera Fence'
 FI_PROVIDE_EPSERVER = 'A PServer value must be provided for this Egenera Fence'
-FI_PROVIDE_NODENAME = 'A Node Name value must be provided for this SCSI Fence'
+FI_PROVIDE_NODENAME = 'A Node Name value must be provided for this Fence'
 
 ILLEGAL_CHARS_REPLACED = 'Illegal characters were replaced by underscores. Feel free to set a new value.'
 
@@ -120,7 +120,7 @@
 	'fence_drac':			[],
 	'fence_rsa':			[],
 	'fence_rps10':			[],
-	'fence_manual':			[]
+	'fence_manual':			['nodename']
 }
 
 FENCE_FD_ATTRS = {
@@ -1094,6 +1094,19 @@
 	fenceinst.addAttribute('nodename', nodename)
 	return errors
 
+def val_manual_fi(form, fenceinst):
+	errors = list()
+
+	try:
+		nodename = form['nodename'].strip()
+		if not nodename:
+			raise Exception, 'blank'
+	except Exception, e:
+		errors.append(FI_PROVIDE_NODENAME)
+
+	fenceinst.addAttribute('nodename', nodename)
+	return errors
+
 def val_noop_fi(dummy, _dummy):
 	return []
 
@@ -1110,12 +1123,12 @@
 	'fence_bullpap':		val_bullpap_fi,
 	'fence_xvm':			val_xvm_fi,
 	'fence_scsi':			val_scsi_fi,
+	'fence_manual':			val_manual_fi,
 	'fence_ilo':			val_noop_fi,
 	'fence_ipmilan':		val_noop_fi,
 	'fence_drac':			val_noop_fi,
 	'fence_rsa':			val_noop_fi,
-	'fence_rps10':			val_noop_fi,
-	'fence_manual':			val_noop_fi
+	'fence_rps10':			val_noop_fi
 }
 
 def validate_fenceinstance(form, parent_name, fence_agent):
--- conga/luci/site/luci/Extensions/cluster_adapters.py	2007/03/16 03:19:22	1.120.2.28
+++ conga/luci/site/luci/Extensions/cluster_adapters.py	2007/05/02 02:36:06	1.120.2.29
@@ -1877,7 +1877,10 @@
 
 					# Add back the tags under the method block
 					# for the fence instance
-					instance_list.append({'name': fencedev_name })
+					if fence_type == 'fence_manual':
+						instance_list.append({'name': fencedev_name, 'nodename': nodename })
+					else:
+						instance_list.append({'name': fencedev_name })
 		else:
 			# The user created a new fence device.
 			retcode, retmsg = validateNewFenceDevice(fence_form, model)
@@ -1891,7 +1894,10 @@
 			# so the appropriate XML goes into the <method> block inside
 			# <node><fence>. All we need for that is the device name.
 			if not 'sharable' in fence_form:
-				instance_list.append({'name': fencedev_name })
+				if fence_type == 'fence_manual':
+					instance_list.append({'name': fencedev_name, 'nodename': nodename })
+				else:
+					instance_list.append({'name': fencedev_name })
 
 		if fencedev_unknown is True:
 			# Save any instances for this fence device.



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2007-05-02  2:39 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2007-05-02  2:39 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL4
Changes by:	rmccabe at sourceware.org	2007-05-02 02:39:53

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: FenceHandler.py cluster_adapters.py 

Log message:
	Fix 238656: conga does not set the "nodename" attribute for manual fencing

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.67.2.10&r2=1.67.2.11
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/FenceHandler.py.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.17.2.1&r2=1.17.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.227.2.18&r2=1.227.2.19

--- conga/conga.spec.in.in	2007/05/01 15:57:33	1.67.2.10
+++ conga/conga.spec.in.in	2007/05/02 02:39:53	1.67.2.11
@@ -288,6 +288,9 @@
 
 
 %changelog
+* Tue Apr 30 2007 Ryan McCabe <rmccabe@redhat.com> 0.9.1-9
+- Fix bz238656 (conga does not set the "nodename" attribute for manual fencing)
+
 * Tue Apr 30 2007 Ryan McCabe <rmccabe@redhat.com> 0.9.1-8
 - Do not build for ppc64
 - Resolves: bz236827
--- conga/luci/site/luci/Extensions/FenceHandler.py	2007/02/12 23:28:16	1.17.2.1
+++ conga/luci/site/luci/Extensions/FenceHandler.py	2007/05/02 02:39:53	1.17.2.2
@@ -29,7 +29,7 @@
 FI_PROVIDE_IPADDRESS = 'An IP address must be provided for this Fence'
 FI_PROVIDE_ELPAN = 'A LPAN value must be provided for this Egenera Fence'
 FI_PROVIDE_EPSERVER = 'A PServer value must be provided for this Egenera Fence'
-FI_PROVIDE_NODENAME = 'A Node Name value must be provided for this SCSI Fence'
+FI_PROVIDE_NODENAME = 'A Node Name value must be provided for this Fence'
 
 ILLEGAL_CHARS_REPLACED = 'Illegal characters were replaced by underscores. Feel free to set a new value.'
 
@@ -120,7 +120,7 @@
 	'fence_drac':			[],
 	'fence_rsa':			[],
 	'fence_rps10':			[],
-	'fence_manual':			[]
+	'fence_manual':			['nodename']
 }
 
 FENCE_FD_ATTRS = {
@@ -1094,6 +1094,19 @@
 	fenceinst.addAttribute('nodename', nodename)
 	return errors
 
+def val_manual_fi(form, fenceinst):
+	errors = list()
+
+	try:
+		nodename = form['nodename'].strip()
+		if not nodename:
+			raise Exception, 'blank'
+	except Exception, e:
+		errors.append(FI_PROVIDE_NODENAME)
+
+	fenceinst.addAttribute('nodename', nodename)
+	return errors
+
 def val_noop_fi(dummy, _dummy):
 	return []
 
@@ -1110,12 +1123,12 @@
 	'fence_bullpap':		val_bullpap_fi,
 	'fence_xvm':			val_xvm_fi,
 	'fence_scsi':			val_scsi_fi,
+	'fence_manual':			val_manual_fi,
 	'fence_ilo':			val_noop_fi,
 	'fence_ipmilan':		val_noop_fi,
 	'fence_drac':			val_noop_fi,
 	'fence_rsa':			val_noop_fi,
-	'fence_rps10':			val_noop_fi,
-	'fence_manual':			val_noop_fi
+	'fence_rps10':			val_noop_fi
 }
 
 def validate_fenceinstance(form, parent_name, fence_agent):
--- conga/luci/site/luci/Extensions/cluster_adapters.py	2007/03/16 03:19:00	1.227.2.18
+++ conga/luci/site/luci/Extensions/cluster_adapters.py	2007/05/02 02:39:53	1.227.2.19
@@ -1877,7 +1877,10 @@
 
 					# Add back the tags under the method block
 					# for the fence instance
-					instance_list.append({'name': fencedev_name })
+					if fence_type == 'fence_manual':
+						instance_list.append({'name': fencedev_name, 'nodename': nodename })
+					else:
+						instance_list.append({'name': fencedev_name })
 		else:
 			# The user created a new fence device.
 			retcode, retmsg = validateNewFenceDevice(fence_form, model)
@@ -1891,7 +1894,10 @@
 			# so the appropriate XML goes into the <method> block inside
 			# <node><fence>. All we need for that is the device name.
 			if not 'sharable' in fence_form:
-				instance_list.append({'name': fencedev_name })
+				if fence_type == 'fence_manual':
+					instance_list.append({'name': fencedev_name, 'nodename': nodename })
+				else:
+					instance_list.append({'name': fencedev_name })
 
 		if fencedev_unknown is True:
 			# Save any instances for this fence device.



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2007-06-25 19:10 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2007-06-25 19:10 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL5
Changes by:	rmccabe at sourceware.org	2007-06-25 19:10:55

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions/ClusterModel: ModelBuilder.py 
	ricci/modules/storage: FSController.cpp FSController.h Makefile 
	                       StorageModule.cpp 
Added files:
	ricci/test_suite/storage: get_fs_group_members.xml 

Log message:
	Add a call to retrieve the list of nodes with a gfs volume mounted

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.40&r2=1.45.2.41
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.1&r2=1.1.4.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/storage/FSController.cpp.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.7&r2=1.7.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/storage/FSController.h.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2&r2=1.2.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/storage/Makefile.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.12&r2=1.12.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/storage/StorageModule.cpp.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.5.2.1&r2=1.5.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/test_suite/storage/get_fs_group_members.xml.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=NONE&r2=1.1.2.1

--- conga/conga.spec.in.in	2007/06/25 16:17:27	1.45.2.40
+++ conga/conga.spec.in.in	2007/06/25 19:10:53	1.45.2.41
@@ -38,7 +38,7 @@
 
 BuildRequires: python-devel >= 2.4.1
 BuildRequires: glibc-devel gcc-c++ libxml2-devel sed
-#BuildRequires: pam-devel
+BuildRequires: cman-devel
 BuildRequires: cyrus-sasl-devel >= 2.1
 BuildRequires: openssl-devel dbus-devel pkgconfig file
 
--- conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py	2007/06/18 18:39:33	1.1.4.1
+++ conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py	2007/06/25 19:10:55	1.1.4.2
@@ -507,6 +507,9 @@
   def getNodeNames(self):
     return map(lambda x: x.getName(), self.clusternodes_ptr.getChildren())
 
+  def getNodeNameById(self, node_id):
+    return filter(lambda x: x.getAttribute('nodeid') == node_id, self.clusternodes_ptr.getChildren())[0].getName()
+
   def addNode(self, clusternode):
     self.clusternodes_ptr.addChild(clusternode)
     if self.usesMulticast is True:
--- conga/ricci/modules/storage/FSController.cpp	2006/09/26 03:20:47	1.7
+++ conga/ricci/modules/storage/FSController.cpp	2007/06/25 19:10:55	1.7.2.1
@@ -1,5 +1,5 @@
 /*
-  Copyright Red Hat, Inc. 2005
+  Copyright Red Hat, Inc. 2005-2007
 
   This program is free software; you can redistribute it and/or modify it
   under the terms of the GNU General Public License as published by the
@@ -20,7 +20,6 @@
  * Author: Stanko Kupcevic <kupcevic@redhat.com>
  */
 
-
 #include "FSController.h"
 #include "ExtendedFS.h"
 #include "SwapFS.h"
@@ -28,10 +27,32 @@
 #include "GFS2.h"
 #include "UnsupportedFS.h"
 #include "utils.h"
-
+#include <errno.h>
+#include <libgroup.h>
 
 using namespace std;
 
+std::list<String>
+FSController::get_fs_group_ids(const String& name)
+{
+	list<String> members;
+	group_data_t fsgroup;
+
+	if (group_get_group(2, name.c_str(), &fsgroup) != 0)
+		throw String("error retrieving group members for " + name + ": " + strerror(errno));
+
+	if (!fsgroup.member)
+		throw String("the local node does not have " + name + " mounted");
+
+	for (int i = 0 ; i < fsgroup.member_count ; i++) {
+		char buf[8];
+		int ret = snprintf(buf, sizeof(buf), "%d", fsgroup.members[i]);
+		if (ret < 1 || (size_t) ret >= sizeof(buf))
+			throw String("invalid node id");
+    	members.push_back(String(buf));
+	}
+	return members;
+}
 
 counting_auto_ptr<Content> 
 FSController::get_fs(const String& path)
--- conga/ricci/modules/storage/FSController.h	2006/08/10 22:53:09	1.2
+++ conga/ricci/modules/storage/FSController.h	2007/06/25 19:10:55	1.2.2.1
@@ -33,7 +33,8 @@
 class FSController
 {
  public:
-  
+  std::list<String> get_fs_group_ids(const String& name);
+ 
   counting_auto_ptr<Content> get_fs(const String& path);
   
   std::list<counting_auto_ptr<ContentTemplate> > get_available_fss();
--- conga/ricci/modules/storage/Makefile	2006/09/26 03:17:41	1.12
+++ conga/ricci/modules/storage/Makefile	2007/06/25 19:10:55	1.12.2.1
@@ -56,7 +56,7 @@
 
 INCLUDE    += 
 CXXFLAGS   += 
-LDFLAGS    += -lmagic
+LDFLAGS    += -lgroup -lmagic
 
 all: ${TARGET}
 
--- conga/ricci/modules/storage/StorageModule.cpp	2006/12/12 13:26:24	1.5.2.1
+++ conga/ricci/modules/storage/StorageModule.cpp	2007/06/25 19:10:55	1.5.2.2
@@ -25,6 +25,7 @@
 #include "MapperFactory.h"
 #include "BDFactory.h"
 #include "LVM.h"
+#include "FSController.h"
 
 
 using namespace std;
@@ -47,6 +48,7 @@
 static VarMap get_bd(const VarMap& args);
 static VarMap modify_bd(const VarMap& args);
 static VarMap remove_bd(const VarMap& args);
+static VarMap get_fs_group_members(const VarMap& args);
 
 static VarMap enable_clustered_lvm(const VarMap& args);
 static VarMap disable_clustered_lvm(const VarMap& args);
@@ -83,6 +85,8 @@
   api_1_0["get_bd"]                             = get_bd;
   api_1_0["modify_bd"]                          = modify_bd;
   api_1_0["remove_bd"]                          = remove_bd;
+
+  api_1_0["get_fs_group_members"]                   = get_fs_group_members;
   
   api_1_0["enable_clustered_lvm"]                 = enable_clustered_lvm;
   api_1_0["disable_clustered_lvm"]                = disable_clustered_lvm;
@@ -416,8 +420,36 @@
   return ret;
 }
 
+VarMap 
+get_fs_group_members(const VarMap& args)
+{
+  String fsname;
+  try {
+    VarMap::const_iterator iter = args.find("fsname");
+    if (iter == args.end())
+      throw APIerror("missing fsname variable");
+    fsname = iter->second.get_string();
+    if (fsname == "")
+		throw APIerror("missing fsname value");
+  } catch ( String e ) {
+    throw APIerror(e);
+  }
 
+  list<XMLObject> ids_list;
+  list<String> group_ids = FSController().get_fs_group_ids(fsname);
+
+  for (list<String>::iterator iter = group_ids.begin() ; iter != group_ids.end() ; iter++)
+  {
+	XMLObject id_xml("group_member");
+	id_xml.set_attr("nodeid", String(*iter));
+	ids_list.push_back(id_xml);
+  }
 
+  Variable var("group_member_list", ids_list);
+  VarMap ret;
+  ret.insert(pair<String, Variable>(var.name(), var));
+  return ret;
+}
 
 
 list<XMLObject> 



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2007-08-17 20:26 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2007-08-17 20:26 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL5
Changes by:	rmccabe at sourceware.org	2007-08-17 20:26:32

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: LuciClusterActions.py LuciDB.py 
	                           LuciZope.py 

Log message:
	Fixed bz249291 (delete node task fails to do all items listed in the help document)

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.55&r2=1.45.2.56
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterActions.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.3&r2=1.1.4.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciDB.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.4&r2=1.1.4.5
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciZope.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.3&r2=1.1.4.4

--- conga/conga.spec.in.in	2007/08/15 14:38:18	1.45.2.55
+++ conga/conga.spec.in.in	2007/08/17 20:26:31	1.45.2.56
@@ -310,6 +310,10 @@
 
 ###  changelog ###
 %changelog
+* Fri Aug 17 2007 Ryan McCabe <rmccabe@redhat.com> 0.10.0-5
+* Fixed bz249291 (delete node task fails to do all items listed in the help document)
+- Resolves: bz249291
+
 * Mon Aug 13 2007 Ryan McCabe <rmccabe@redhat.com> 0.10.0-4
 - Fixed bz230451 (fence_xvm.key file is not automatically created. Should have a least a default)
 - Fixed bz249097 (allow a space as a valid password char)
--- conga/luci/site/luci/Extensions/LuciClusterActions.py	2007/07/26 04:20:59	1.1.4.3
+++ conga/luci/site/luci/Extensions/LuciClusterActions.py	2007/08/17 20:26:32	1.1.4.4
@@ -364,6 +364,10 @@
 				exclude_names=[ nodename_resolved ], exclude_busy=True)
 
 		if rc2 is None:
+			rc2 = getRicciAgent(self, clustername,
+					exclude_names=[ nodename_resolved ])
+
+		if rc2 is None:
 			if LUCI_DEBUG_MODE is True:
 				luci_log.debug_verbose('ND0: unable to find ricci agent to delete %s from %s' % (nodename_resolved, clustername))
 			return None
@@ -589,9 +593,11 @@
 def NodeFence(self, clustername, nodename, nodename_resolved):
 	rc = getRicciAgent(self, clustername,
 			exclude_names=[ nodename_resolved, nodename ], exclude_busy=True)
+
 	if rc is None:
 		rc = getRicciAgent(self, clustername,
 				exclude_names=[ nodename_resolved, nodename ])
+
 	if rc is None:
 		if LUCI_DEBUG_MODE is True:
 			luci_log.debug_verbose('FNF0: no ricci to fence %s for cluster %s' \
@@ -636,6 +642,7 @@
 
 	if rc is None:
 		rc = getRicciAgent(self, clustername, exclude_busy=True)
+
 	if rc is None:
 		rc = getRicciAgent(self, clustername)
 
--- conga/luci/site/luci/Extensions/LuciDB.py	2007/07/26 04:20:59	1.1.4.4
+++ conga/luci/site/luci/Extensions/LuciDB.py	2007/08/17 20:26:32	1.1.4.5
@@ -852,7 +852,7 @@
 			continue
 
 		if exclude_busy is True:
-			if NodeBusy(self, cluname, ricci_hostname, rc) is not False:
+			if NodeBusy(self, clustername, ricci_hostname, rc) is not False:
 				if LUCI_DEBUG_MODE is True:
 					luci_log.debug_verbose('GRA13: %s is busy, excluding' \
 						% ricci_hostname)
@@ -861,7 +861,7 @@
 
 	if LUCI_DEBUG_MODE is True:
 		luci_log.debug('GRA14: no ricci agent could be found for cluster %s' \
-			% cluname)
+			% clustername)
 	return None
 
 def getClusterDBObj(self, clustername):
--- conga/luci/site/luci/Extensions/LuciZope.py	2007/08/08 21:14:38	1.1.4.3
+++ conga/luci/site/luci/Extensions/LuciZope.py	2007/08/17 20:26:32	1.1.4.4
@@ -126,7 +126,7 @@
 
 def GetReqVars(req, varlist):
 	ret = {}
-	from types import ListType;
+	from types import ListType
 
 	for i in varlist:
 		pval = None



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2007-09-20 22:37 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2007-09-20 22:37 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Changes by:	rmccabe at sourceware.org	2007-09-20 22:37:32

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: FenceHandler.py LuciClusterInfo.py 
	                           cluster_adapters.py 
	luci/site/luci/Extensions/ClusterModel: Device.py FenceDevice.py 
	                                        ModelBuilder.py 
Added files:
	luci/site/luci/Extensions/ClusterModel: FenceDeviceAttr.py 

Log message:
	Fix bz253223 (When deleting a node from conga, the fence device isn't deleted)

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&r1=1.83&r2=1.84
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/FenceHandler.py.diff?cvsroot=cluster&r1=1.22&r2=1.23
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterInfo.py.diff?cvsroot=cluster&r1=1.13&r2=1.14
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.270&r2=1.271
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/FenceDeviceAttr.py.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/Device.py.diff?cvsroot=cluster&r1=1.4&r2=1.5
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/FenceDevice.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.9&r2=1.10

--- conga/conga.spec.in.in	2007/09/20 21:03:16	1.83
+++ conga/conga.spec.in.in	2007/09/20 22:37:32	1.84
@@ -293,6 +293,7 @@
 - Fixed bz277661 (RFE: Better instructions on the luci login page if luci_admin not run.)
 - Fixed bz277711 (RFE: luci_admin should check that luci is running before asking for the password)
 - Fixed bz295771 (RFE: add ability to set self_fence attribute for clusterfs resources)
+- Fixed bz253223 (When deleting a node from conga, the fence device isn't deleted)
 
 * Mon Aug 27 2007 Ryan McCabe <rmccabe@redhat.com> 0.10.0-6
 - Fixed bz253783
--- conga/luci/site/luci/Extensions/FenceHandler.py	2007/08/08 21:26:37	1.22
+++ conga/luci/site/luci/Extensions/FenceHandler.py	2007/09/20 22:37:32	1.23
@@ -43,117 +43,6 @@
 
 ILLEGAL_CHARS_REPLACED = 'Illegal characters were replaced by underscores. Feel free to set a new value.'
 
-# For every new fence added, there will be a fence instance and fence device
-# form needed. There will also be a populate and a validate method for each
-# form. The methods will need to be added to this file, and the four hash
-# tables (self.fi_populate, self.fi_validate, self.fd_populate,
-# self.fd_validate) must be updated. The methods will use fields in the
-# forms to set_text and to check.
-
-FENCE_OPTS = {
-	'fence_apc':			'APC Power Device',
-	'fence_wti':			'WTI Power Device',
-	'fence_brocade':		'Brocade Switch',
-	'fence_vixel':			'Vixel SAN Switch',
-	'fence_gnbd':			'Global Network Block Device',
-	'fence_sanbox2':		'QLogic SANBox2',
-	'fence_bladecenter':	'IBM Blade Center',
-	'fence_mcdata':			'McDATA SAN Switch',
-	'fence_egenera':		'Egenera SAN Controller',
-	'fence_bullpap':		'Bull PAP',
-	'fence_xvm':			'Virtual Machine Fencing',
-	'fence_scsi':			'SCSI Reservation',
-	'fence_ilo':			'HP ILO Device',
-	'fence_ipmilan':		'IPMI Lan',
-	'fence_drac':			'Dell DRAC',
-	'fence_rsa':			'IBM RSA II Device',
-	'fence_rps10':			'RPS10 Serial Switch',
-	'fence_manual':			'Manual Fencing'
-}
-
-FENCE_SHARED = {
-	'fence_apc':			True,
-	'fence_wti':			True,
-	'fence_brocade':		True,
-	'fence_vixel':			True,
-	'fence_gnbd':			True,
-	'fence_sanbox2':		True,
-	'fence_bladecenter':	True,
-	'fence_mcdata':			True,
-	'fence_egenera':		True,
-	'fence_bullpap':		True,
-	'fence_xvm':			True,
-	'fence_scsi':			True,
-	'fence_ilo':			False,
-	'fence_ipmilan':		False,
-	'fence_drac':			False,
-	'fence_rsa':			False,
-	'fence_rps10':			False,
-	'fence_manual':			False
-}
-
-PRETTY_NAME_ATTRS = {
-	'port':					'Port',
-	'blade':				'Blade',
-	'switch':				'Switch',
-	'ipaddr':				'IP Address',
-	'ipaddress':			'IP Address',
-	'nodename':				'Node Name',
-	'lpan':					'LPAN',
-	'lanplus':				'Lanplus',
-	'pserver':				'PServer',
-	'login':				'Login',
-	'passwd':				'Password',
-	'name':					'Name',
-	'server':				'Server',
-	'domain':				'Domain',
-	'hostname':				'Hostname',
-	'path':					'Path',
-	'cserver':				'CServer'
-}
-
-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':			['nodename'],
-	'fence_ilo':			[],
-	'fence_ipmilan':		[],
-	'fence_drac':			[],
-	'fence_rsa':			[],
-	'fence_rps10':			[],
-	'fence_manual':			[]
-}
-
-FENCE_FD_ATTRS = {
-	'fence_apc': ['name', 'ipaddr', 'login', 'passwd'],
-	'fence_wti': ['name', 'ipaddr', 'passwd'],
-	'fence_brocade': ['name', 'ipaddr', 'login', 'passwd'],
-	'fence_vixel': ['name', 'ipaddr', 'passwd'],
-	'fence_gnbd': ['name', 'servers'],
-	'fence_sanbox2': ['name', 'ipaddr', 'login', 'passwd'],
-	'fence_bladecenter': ['name', 'ipaddr', 'login', 'passwd'],
-	'fence_mcdata': ['name', 'ipaddr', 'login', 'passwd'],
-	'fence_egenera': ['name', 'cserver'],
-	'fence_bullpap': ['name', 'ipaddr', 'login', 'passwd'],
-	'fence_xvm': ['name'],
-	'fence_scsi': ['name'],
-	'fence_ilo': ['name', 'hostname', 'login', 'passwd'],
-	'fence_ipmilan': ['name', 'ipaddr', 'login', 'passwd', 'lanplus', 'auth'],
-	'fence_drac': ['name', 'ipaddr', 'login', 'passwd'],
-	'fence_rsa': ['name', 'hostname', 'login', 'passwd'],
-	'fence_rps10': ['name', 'device', 'port'],
-	'fence_manual': ['name']
-}
-
 luci_log = get_logger()
 
 def makeNCName(name):
--- conga/luci/site/luci/Extensions/LuciClusterInfo.py	2007/09/11 16:04:33	1.13
+++ conga/luci/site/luci/Extensions/LuciClusterInfo.py	2007/09/20 22:37:32	1.14
@@ -7,9 +7,9 @@
 
 from Products.Archetypes.utils import make_uuid
 from ClusterModel.ModelBuilder import ModelBuilder
+from ClusterModel.FenceDeviceAttr import FENCE_OPTS
 import RicciQueries as rq
 from ricci_communicator import RicciCommunicator
-from FenceHandler import FENCE_OPTS
 from LuciSyslog import get_logger
 from LuciDB import resolve_nodename
 from LuciZope import GetReqVars
--- conga/luci/site/luci/Extensions/cluster_adapters.py	2007/09/11 16:04:33	1.270
+++ conga/luci/site/luci/Extensions/cluster_adapters.py	2007/09/20 22:37:32	1.271
@@ -1796,6 +1796,7 @@
 	if fencedev_name is None:
 		return (False, {'errors': ['No 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:
/cvs/cluster/conga/luci/site/luci/Extensions/ClusterModel/FenceDeviceAttr.py,v  -->  standard output
revision 1.1
--- conga/luci/site/luci/Extensions/ClusterModel/FenceDeviceAttr.py
+++ -	2007-09-20 22:37:33.804688000 +0000
@@ -0,0 +1,130 @@
+# Copyright (C) 2007 Red Hat, Inc.
+#
+# This program is free software; you can redistribute
+# it and/or modify it under the terms of version 2 of the
+# GNU General Public License as published by the
+# Free Software Foundation.
+
+FENCE_POWER_CONTROLLERS = [ 'fence_wti', 'fence_apc', 'fence_apc_snmp' ]
+
+FENCE_OPTS = {
+	'fence_apc':			'APC Power Device',
+	'fence_wti':			'WTI Power Device',
+	'fence_brocade':		'Brocade Switch',
+	'fence_vixel':			'Vixel SAN Switch',
+	'fence_gnbd':			'Global Network Block Device',
+	'fence_sanbox2':		'QLogic SANBox2',
+	'fence_bladecenter':	'IBM Blade Center',
+	'fence_mcdata':			'McDATA SAN Switch',
+	'fence_egenera':		'Egenera SAN Controller',
+	'fence_bullpap':		'Bull PAP',
+	'fence_xvm':			'Virtual Machine Fencing',
+	'fence_scsi':			'SCSI Reservation',
+	'fence_ilo':			'HP iLO Device',
+	'fence_ipmilan':		'IPMI Lan',
+	'fence_drac':			'Dell DRAC',
+	'fence_rsa':			'IBM RSA II Device',
+	'fence_rps10':			'RPS10 Serial Switch',
+	'fence_manual':			'Manual Fencing'
+}
+
+FENCE_SHARED = {
+	'fence_apc':			True,
+	'fence_wti':			True,
+	'fence_brocade':		True,
+	'fence_vixel':			True,
+	'fence_gnbd':			True,
+	'fence_sanbox2':		True,
+	'fence_bladecenter':	True,
+	'fence_mcdata':			True,
+	'fence_egenera':		True,
+	'fence_bullpap':		True,
+	'fence_xvm':			True,
+	'fence_scsi':			True,
+	'fence_ilo':			False,
+	'fence_ipmilan':		False,
+	'fence_drac':			False,
+	'fence_rsa':			False,
+	'fence_rps10':			False,
+	'fence_manual':			False
+}
+
+PRETTY_NAME_ATTRS = {
+	'port':					'Port',
+	'blade':				'Blade',
+	'switch':				'Switch',
+	'ipaddr':				'IP Address',
+	'ipaddress':			'IP Address',
+	'nodename':				'Node Name',
+	'lpan':					'LPAN',
+	'lanplus':				'Lanplus',
+	'pserver':				'PServer',
+	'login':				'Login',
+	'passwd':				'Password',
+	'name':					'Name',
+	'server':				'Server',
+	'domain':				'Domain',
+	'hostname':				'Hostname',
+	'path':					'Path',
+	'cserver':				'CServer'
+}
+
+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':			[ 'nodename' ],
+	'fence_ilo':			[ ],
+	'fence_ipmilan':		[ ],
+	'fence_drac':			[ ],
+	'fence_rsa':			[ ],
+	'fence_rps10':			[ ],
+	'fence_manual':			[ ]
+}
+
+FENCE_FD_ATTRS = {
+	'fence_apc':
+		[ 'name', 'ipaddr', 'login', 'passwd' ],
+	'fence_wti':
+		[ 'name', 'ipaddr', 'passwd' ],
+	'fence_brocade':
+		[ 'name', 'ipaddr', 'login', 'passwd' ],
+	'fence_vixel':
+		[ 'name', 'ipaddr', 'passwd' ],
+	'fence_gnbd':
+		[ 'name', 'servers' ],
+	'fence_sanbox2':
+		[ 'name', 'ipaddr', 'login', 'passwd' ],
+	'fence_bladecenter':
+		[ 'name', 'ipaddr', 'login', 'passwd' ],
+	'fence_mcdata':
+		[ 'name', 'ipaddr', 'login', 'passwd' ],
+	'fence_egenera':
+		[ 'name', 'cserver' ],
+	'fence_bullpap':
+		[ 'name', 'ipaddr', 'login', 'passwd' ],
+	'fence_xvm':
+		[ 'name' ],
+	'fence_scsi':
+		[ 'name' ],
+	'fence_ilo':
+		[ 'name', 'hostname', 'login', 'passwd' ],
+	'fence_ipmilan':
+		[ 'name', 'ipaddr', 'login', 'passwd', 'lanplus', 'auth' ],
+	'fence_drac':
+		[ 'name', 'ipaddr', 'login', 'passwd' ],
+	'fence_rsa':
+		[ 'name', 'hostname', 'login', 'passwd' ],
+	'fence_rps10':
+		[ 'name', 'device', 'port' ],
+	'fence_manual':
+		[ 'name' ]
+}
--- conga/luci/site/luci/Extensions/ClusterModel/Device.py	2007/08/08 21:00:08	1.4
+++ conga/luci/site/luci/Extensions/ClusterModel/Device.py	2007/09/20 22:37:32	1.5
@@ -5,25 +5,21 @@
 # GNU General Public License as published by the
 # Free Software Foundation.
 
-import FenceHandler
+import FenceDeviceAttr
 from TagObject import TagObject
 
 TAG_NAME = "device"
 OPTION = "option"
 
-#New Power Controller Fence Agent names should be added to
-#the list below
-power_controller_list = [ "fence_wti", "fence_apc", "fence_apc_snmp" ]
-
 class Device(TagObject):
   def __init__(self):
     TagObject.__init__(self)
     self.TAG_NAME = TAG_NAME
     self.agent_type = ""
     self.has_native_option_set = False
-    self.fi_attrs = FenceHandler.FENCE_FI_ATTRS
-    self.pretty_fence_names = FenceHandler.FENCE_OPTS
-    self.pretty_name_attrs = FenceHandler.PRETTY_NAME_ATTRS
+    self.fi_attrs = FenceDeviceAttr.FENCE_FI_ATTRS
+    self.pretty_fence_names = FenceDeviceAttr.FENCE_OPTS
+    self.pretty_name_attrs = FenceDeviceAttr.PRETTY_NAME_ATTRS
 
   def getAgentType(self):
     return self.agent_type
@@ -35,7 +31,7 @@
     return self.has_native_option_set
 
   def isPowerController(self):
-    for item in power_controller_list:
+    for item in FenceDeviceAttr.FENCE_POWER_CONTROLLERS:
       if self.agent_type == item:
         return True
 
--- conga/luci/site/luci/Extensions/ClusterModel/FenceDevice.py	2007/06/25 16:03:39	1.2
+++ conga/luci/site/luci/Extensions/ClusterModel/FenceDevice.py	2007/09/20 22:37:32	1.3
@@ -5,7 +5,7 @@
 # GNU General Public License as published by the
 # Free Software Foundation.
 
-import FenceHandler
+import FenceDeviceAttr
 from TagObject import TagObject
 
 TAG_NAME = "fencedevice"
@@ -15,12 +15,10 @@
   def __init__(self):
     TagObject.__init__(self)
     self.TAG_NAME = TAG_NAME
-    self.fd_attrs = FenceHandler.FENCE_FD_ATTRS
-    self.pretty_fence_names = FenceHandler.FENCE_OPTS
-    self.pretty_name_attrs = FenceHandler.PRETTY_NAME_ATTRS
-    self.shared_fences = FenceHandler.FENCE_SHARED
-
-
+    self.fd_attrs = FenceDeviceAttr.FENCE_FD_ATTRS
+    self.pretty_fence_names = FenceDeviceAttr.FENCE_OPTS
+    self.pretty_name_attrs = FenceDeviceAttr.PRETTY_NAME_ATTRS
+    self.shared_fences = FenceDeviceAttr.FENCE_SHARED
 
   def getAgentType(self):
     agent = self.attr_hash["agent"]
@@ -30,6 +28,9 @@
       pass
     return agent
 
+  def getPrettyName(self):
+    return self.pretty_fence_names[self.attr_hash['name']]
+
   def isShared(self):
     agent = self.getAgentType()
     if agent == "fence_drac": #2 variants of drac...
--- conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py	2007/09/11 19:04:32	1.9
+++ conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py	2007/09/20 22:37:32	1.10
@@ -333,7 +333,14 @@
 
     return obj_tree
 
-
+  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:
+      return None
+    return device[0]
+      
   ##Because fence devices are declared in a separate XML section
   ##in conf file, agent types for fence instances must be done in
   ##a separate pass, after the DOM is completely built. This method
@@ -527,12 +534,19 @@
     self.isModified = True
 
   def deleteNode(self, clusternode):
-    #1) delete node
-    #2) delete failoverdomainnodes with same name
-    #3) delete lockserver nodes if GULM
+    #1) delete any non-shared fence devices used by this node
+    #2) delete node
+    #3) delete failoverdomainnodes with same name
+    #4) delete lockserver nodes if GULM
 
     name = clusternode.getName()
 
+    for level in clusternode.getFenceLevels():
+        for fence in level.getChildren():
+            fdev = self.getFenceDeviceByName(fence.getName())
+            if fdev and not fdev.isShared():
+                self.deleteFenceDevice(fdev)
+                
     self.clusternodes_ptr.removeChild(clusternode)
 
     found_one = True
@@ -607,6 +621,12 @@
       self.cluster_ptr.removeChild(self.fence_xvmd_ptr)
       self.fence_xvmd_ptr = None
 
+  def deleteFenceDevice(self, device):
+    if self.fencedevices_ptr is None or device is None:
+      return False
+    self.fencedevices_ptr.removeChild(device)
+    return True
+
   def getFenceDevices(self):
     if self.fencedevices_ptr is None:
       return list()



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2007-10-03  2:16 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2007-10-03  2:16 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL5
Changes by:	rmccabe at sourceware.org	2007-10-03 02:16:06

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: FenceHandler.py 
	make           : version.in 

Log message:
	Fix regression of bz249097

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.60&r2=1.45.2.61
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/FenceHandler.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.4.2.9&r2=1.4.2.10
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/make/version.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.21.2.24&r2=1.21.2.25

--- conga/conga.spec.in.in	2007/08/27 18:42:17	1.45.2.60
+++ conga/conga.spec.in.in	2007/10/03 02:16:06	1.45.2.61
@@ -310,6 +310,9 @@
 
 ###  changelog ###
 %changelog
+* Tue Oct 02 2007 Ryan McCabe <rmccabe@redhat.com> 0.10.1-1
+* Fix regression of bz249097
+
 * Mon Aug 27 2007 Ryan McCabe <rmccabe@redhat.com> 0.10.0-6
 - Fixed bz253783
 - Fixed bz253914 (conga doesn't allow you to reuse nfs export and nfs client resources)
--- conga/luci/site/luci/Extensions/FenceHandler.py	2007/08/01 19:53:34	1.4.2.9
+++ conga/luci/site/luci/Extensions/FenceHandler.py	2007/10/03 02:16:06	1.4.2.10
@@ -291,7 +291,11 @@
 	try:
 		pwd = form['passwd'].strip()
 		if not pwd:
-			raise Exception, 'blank'
+			# Allow passwords that consist of only spaces.
+			if not form.has_key('passwd') or form['passwd'] == '':
+				raise Exception, 'blank'
+			else:
+				pwd = form['passwd']
 		fencedev.addAttribute('passwd', pwd)
 		has_passwd = True
 	except Exception, e:
@@ -340,7 +344,11 @@
 	try:
 		pwd = form['passwd'].strip()
 		if not pwd:
-			raise Exception, 'blank'
+			# Allow passwords that consist of only spaces.
+			if not form.has_key('passwd') or form['passwd'] == '':
+				raise Exception, 'blank'
+			else:
+				pwd = form['passwd']
 		fencedev.addAttribute('passwd', pwd)
 		has_passwd = True
 	except Exception, e:
@@ -381,7 +389,11 @@
 	try:
 		pwd = form['passwd'].strip()
 		if not pwd:
-			raise Exception, 'blank'
+			# Allow passwords that consist of only spaces.
+			if not form.has_key('passwd') or form['passwd'] == '':
+				raise Exception, 'blank'
+			else:
+				pwd = form['passwd']
 		fencedev.addAttribute('passwd', pwd)
 		has_passwd = True
 	except Exception, e:
@@ -430,7 +442,11 @@
 	try:
 		pwd = form['passwd'].strip()
 		if not pwd:
-			raise Exception, 'blank'
+			# Allow passwords that consist of only spaces.
+			if not form.has_key('passwd') or form['passwd'] == '':
+				raise Exception, 'blank'
+			else:
+				pwd = form['passwd']
 		fencedev.addAttribute('passwd', pwd)
 		has_passwd = True
 	except Exception, e:
@@ -505,7 +521,11 @@
 	try:
 		pwd = form['passwd'].strip()
 		if not pwd:
-			raise Exception, 'blank'
+			# Allow passwords that consist of only spaces.
+			if not form.has_key('passwd') or form['passwd'] == '':
+				raise Exception, 'blank'
+			else:
+				pwd = form['passwd']
 		fencedev.addAttribute('passwd', pwd)
 		has_passwd = True
 	except Exception, e:
@@ -554,7 +574,11 @@
 	try:
 		pwd = form['passwd'].strip()
 		if not pwd:
-			raise Exception, 'blank'
+			# Allow passwords that consist of only spaces.
+			if not form.has_key('passwd') or form['passwd'] == '':
+				raise Exception, 'blank'
+			else:
+				pwd = form['passwd']
 		fencedev.addAttribute('passwd', pwd)
 		has_passwd = True
 	except Exception, e:
@@ -603,7 +627,11 @@
 	try:
 		pwd = form['passwd'].strip()
 		if not pwd:
-			raise Exception, 'blank'
+			# Allow passwords that consist of only spaces.
+			if not form.has_key('passwd') or form['passwd'] == '':
+				raise Exception, 'blank'
+			else:
+				pwd = form['passwd']
 		fencedev.addAttribute('passwd', pwd)
 		has_passwd = True
 	except Exception, e:
@@ -657,7 +685,11 @@
 	try:
 		pwd = form['passwd'].strip()
 		if not pwd:
-			raise Exception, 'blank'
+			# Allow passwords that consist of only spaces.
+			if not form.has_key('passwd') or form['passwd'] == '':
+				raise Exception, 'blank'
+			else:
+				pwd = form['passwd']
 		fencedev.addAttribute('passwd', pwd)
 		has_passwd = True
 	except Exception, e:
@@ -706,7 +738,11 @@
 	try:
 		pwd = form['passwd'].strip()
 		if not pwd:
-			raise Exception, 'blank'
+			# Allow passwords that consist of only spaces.
+			if not form.has_key('passwd') or form['passwd'] == '':
+				raise Exception, 'blank'
+			else:
+				pwd = form['passwd']
 		fencedev.addAttribute('passwd', pwd)
 		has_passwd = True
 	except Exception, e:
@@ -776,12 +812,11 @@
 	try:
 		pwd = form['passwd'].strip()
 		if not pwd:
-			if form['passwd']:
-				# allow passwords consisting of nothing but whitespace
-				fencedev.addAttribute('passwd', form['passwd'])
-			else:
+			# Allow passwords that consist of only spaces.
+			if not form.has_key('passwd') or form['passwd'] == '':
 				raise Exception, 'blank'
-
+			else:
+				pwd = form['passwd']
 		fencedev.addAttribute('passwd', pwd)
 		has_passwd = True
 	except Exception, e:
@@ -852,7 +887,11 @@
 	try:
 		pwd = form['passwd'].strip()
 		if not pwd:
-			raise Exception, 'blank'
+			# Allow passwords that consist of only spaces.
+			if not form.has_key('passwd') or form['passwd'] == '':
+				raise Exception, 'blank'
+			else:
+				pwd = form['passwd']
 		fencedev.addAttribute('passwd', pwd)
 		has_passwd = True
 	except Exception, e:
--- conga/make/version.in	2007/08/23 04:58:30	1.21.2.24
+++ conga/make/version.in	2007/10/03 02:16:06	1.21.2.25
@@ -1,5 +1,5 @@
-VERSION=0.10.0
-RELEASE=6
+VERSION=0.10.1
+RELEASE=1
 # Remove "_UNRELEASED" at release time.
 # Put release num at the beggining, 
 # so that after it gets released, it has 



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2007-10-09 21:31 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2007-10-09 21:31 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Changes by:	rmccabe at sourceware.org	2007-10-09 21:31:05

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: cluster_adapters.py 

Log message:
	Fix 315631: conga doesn't handle the cluster restart operation properly

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&r1=1.86&r2=1.87
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.272&r2=1.273

--- conga/conga.spec.in.in	2007/10/09 20:57:35	1.86
+++ conga/conga.spec.in.in	2007/10/09 21:31:05	1.87
@@ -296,6 +296,7 @@
 - Fixed bz253223 (When deleting a node from conga, the fence device isn't deleted)
 - Fixed bz253879 (RFE: drop the link/details column in the resource section table)
 - Fixed bz249619 (luci "Manage Systems and Clusters" display of clusters and storage systems is cascaded)
+- Fixed bz315631 (conga doesn't handle the cluster restart operation properly)
 
 * Mon Aug 27 2007 Ryan McCabe <rmccabe@redhat.com> 0.10.0-6
 - Fixed bz253783
--- conga/luci/site/luci/Extensions/cluster_adapters.py	2007/09/21 03:02:47	1.272
+++ conga/luci/site/luci/Extensions/cluster_adapters.py	2007/10/09 21:31:05	1.273
@@ -34,7 +34,7 @@
 	CLUSTER_ADD, CLUSTER_CONFIG, CLUSTER_DAEMON, CLUSTER_DELETE, \
 	CLUSTER_FOLDER_PATH, CLUSTER_RESTART, CLUSTER_START, CLUSTER_STOP, \
 	DISABLE_SVC_TASK, ENABLE_SVC_TASK, FDOM, FDOM_ADD, FENCEDEV, \
-	FENCEDEV_NODE_CONFIG, FENCEDEVS, FLAG_DESC, INSTALL_TASK, \
+	FENCEDEV_NODE_CONFIG, FENCEDEVS, FLAG_DESC, INSTALL_TASK, CLUSTER_PROCESS, \
 	LAST_STATUS, LUCI_DEBUG_MODE, NODE, NODE_ADD, NODE_DELETE, \
 	NODE_FENCE, NODE_FORCE_DELETE, NODE_JOIN_CLUSTER, NODE_LEAVE_CLUSTER, \
 	NODE_REBOOT, NODES, POSSIBLE_REBOOT_MESSAGE, PRE_CFG, PRE_INSTALL, \
@@ -2308,14 +2308,16 @@
 			luci_log.debug('CTP0: no cluster task')
 		return 'No cluster task was given'
 
+	cluname = fvar['clustername']
 	if not model:
-		cluname = fvar['clustername']
 		model = LuciExtractCluModel(self, request, cluname)
 		if model is None:
 			if LUCI_DEBUG_MODE is True:
 				luci_log.debug_verbose('CTP2: No cluster model for %s' \
 					% cluname)
 			return 'Unable to retrieve the cluster configuration for %s. The configuration XML may contain errors.' % cluname
+	elif cluname is None:
+		cluname = model.getClusterName()
 
 	redirect_page = NODES
 	if task == CLUSTER_STOP:
@@ -2325,8 +2327,11 @@
 		from LuciClusterActions import ClusterStart
 		ClusterStart(self, model)
 	elif task == CLUSTER_RESTART:
-		from LuciClusterActions import ClusterRestart
-		ClusterRestart(self, model)
+		from LuciClusterActions import ClusterStop
+		ClusterStop(self, model)
+		request.RESPONSE.redirect('%s?pagetype=%s&clustername=%s&task=%s&busyfirst=true' \
+			% (baseurl, CLUSTER_PROCESS, cluname, CLUSTER_START))
+		return
 	elif task == CLUSTER_DELETE:
 		from LuciClusterActions import ClusterDelete
 		ret = ClusterDelete(self, model)



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2007-10-09 21:33 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2007-10-09 21:33 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL4
Changes by:	rmccabe at sourceware.org	2007-10-09 21:33:47

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: cluster_adapters.py 

Log message:
	Fix bz325501 (conga doesn't handle the cluster restart operation properly)

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.67.2.17&r2=1.67.2.18
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.227.2.24&r2=1.227.2.25

--- conga/conga.spec.in.in	2007/09/21 03:24:12	1.67.2.17
+++ conga/conga.spec.in.in	2007/10/09 21:33:47	1.67.2.18
@@ -331,9 +331,11 @@
 - Fix bz253784
 - Fix bz253901 (No node IDs generated on new RHEL4 / DLM cluster)
 - Fix bz286951 (conga passes fence_scsi nodename, where as it accepts only node)
+- Fix bz325501 (conga doesn't handle the cluster restart operation properly)
 - Related: bz241417
 - Resolves: bz238727, bz241414, bz238656, bz245200, bz227723
 - Resolves: bz253905, bz253906, bz253784, bz253901, bz286951
+- Resolves: bz325501
 
 * Tue Apr 30 2007 Ryan McCabe <rmccabe@redhat.com> 0.9.1-9
 - Fix bz238656 (conga does not set the "nodename" attribute for manual fencing)
--- conga/luci/site/luci/Extensions/cluster_adapters.py	2007/08/24 21:55:42	1.227.2.24
+++ conga/luci/site/luci/Extensions/cluster_adapters.py	2007/10/09 21:33:47	1.227.2.25
@@ -34,7 +34,7 @@
 	CLUSTER_ADD, CLUSTER_CONFIG, CLUSTER_DAEMON, CLUSTER_DELETE, \
 	CLUSTER_FOLDER_PATH, CLUSTER_RESTART, CLUSTER_START, CLUSTER_STOP, \
 	DISABLE_SVC_TASK, ENABLE_SVC_TASK, FDOM, FDOM_ADD, FENCEDEV, \
-	FENCEDEV_NODE_CONFIG, FENCEDEVS, FLAG_DESC, INSTALL_TASK, \
+	FENCEDEV_NODE_CONFIG, FENCEDEVS, FLAG_DESC, INSTALL_TASK, CLUSTER_PROCESS, \
 	LAST_STATUS, LUCI_DEBUG_MODE, NODE, NODE_ADD, NODE_DELETE, \
 	NODE_FENCE, NODE_FORCE_DELETE, NODE_JOIN_CLUSTER, NODE_LEAVE_CLUSTER, \
 	NODE_REBOOT, NODES, POSSIBLE_REBOOT_MESSAGE, PRE_CFG, PRE_INSTALL, \
@@ -2327,14 +2327,16 @@
 			luci_log.debug('CTP0: no cluster task')
 		return 'No cluster task was given'
 
+	cluname = fvar['clustername']
 	if not model:
-		cluname = fvar['clustername']
 		model = LuciExtractCluModel(self, request, cluname)
 		if model is None:
 			if LUCI_DEBUG_MODE is True:
 				luci_log.debug_verbose('CTP2: No cluster model for %s' \
 					% cluname)
 			return 'Unable to retrieve the cluster configuration for %s. The configuration XML may contain errors.' % cluname
+	elif cluname is None:
+		cluname = model.getClusterName()
 
 	redirect_page = NODES
 	if task == CLUSTER_STOP:
@@ -2344,8 +2346,11 @@
 		from LuciClusterActions import ClusterStart
 		ClusterStart(self, model)
 	elif task == CLUSTER_RESTART:
-		from LuciClusterActions import ClusterRestart
-		ClusterRestart(self, model)
+		from LuciClusterActions import ClusterStop
+		ClusterStop(self, model)
+		request.RESPONSE.redirect('%s?pagetype=%s&clustername=%s&task=%s&busyfirst=true' \
+			% (baseurl, CLUSTER_PROCESS, cluname, CLUSTER_START))
+		return
 	elif task == CLUSTER_DELETE:
 		from LuciClusterActions import ClusterDelete
 		ret = ClusterDelete(self, model)



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2007-10-09 21:41 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2007-10-09 21:41 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Changes by:	rmccabe at sourceware.org	2007-10-09 21:41:46

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: LuciClusterActions.py 

Log message:
	Fixed bz320411 (conga should use the node name in cluster.conf and not FQDN for fencing)

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&r1=1.87&r2=1.88
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterActions.py.diff?cvsroot=cluster&r1=1.7&r2=1.8

--- conga/conga.spec.in.in	2007/10/09 21:31:05	1.87
+++ conga/conga.spec.in.in	2007/10/09 21:41:46	1.88
@@ -297,6 +297,7 @@
 - Fixed bz253879 (RFE: drop the link/details column in the resource section table)
 - Fixed bz249619 (luci "Manage Systems and Clusters" display of clusters and storage systems is cascaded)
 - Fixed bz315631 (conga doesn't handle the cluster restart operation properly)
+- Fixed bz320411 (conga should use the node name in cluster.conf and not FQDN for fencing)
 
 * Mon Aug 27 2007 Ryan McCabe <rmccabe@redhat.com> 0.10.0-6
 - Fixed bz253783
--- conga/luci/site/luci/Extensions/LuciClusterActions.py	2007/09/28 05:36:39	1.7
+++ conga/luci/site/luci/Extensions/LuciClusterActions.py	2007/10/09 21:41:46	1.8
@@ -613,10 +613,10 @@
 	if rc is None:
 		if LUCI_DEBUG_MODE is True:
 			luci_log.debug_verbose('FNF0: no ricci to fence %s for cluster %s' \
-				% (nodename_resolved, clustername))
+				% (nodename, clustername))
 		return None
 
-	batch_number, result = rq.nodeFence(rc, nodename_resolved)
+	batch_number, result = rq.nodeFence(rc, nodename)
 	if batch_number is None or result is None:
 		if LUCI_DEBUG_MODE is True:
 			luci_log.debug_verbose('FNF1: batch_number and/or result is None')
@@ -626,7 +626,7 @@
 		set_node_flag(self, clustername, rc.hostname(),
 			str(batch_number), NODE_FENCE,
 			'Node "%s" is being fenced by node "%s"' \
-				% (nodename_resolved, rc.hostname()))
+				% (nodename, rc.hostname()))
 	except Exception, e:
 		if LUCI_DEBUG_MODE is True:
 			luci_log.debug_verbose('FNF2: failed to set flags: %r %s' \



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-01-14 20:51 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-01-14 20:51 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Changes by:	rmccabe at sourceware.org	2008-01-14 20:51:42

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: cluster_adapters.py LuciDB.py 
	luci/cluster   : busy_wait-macro 

Log message:
	Fix bz239387 (RFE: add timeouts for actions that can leave cluster unreachable)

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&r1=1.91&r2=1.92
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.277&r2=1.278
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciDB.py.diff?cvsroot=cluster&r1=1.7&r2=1.8
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/busy_wait-macro.diff?cvsroot=cluster&r1=1.1&r2=1.2

--- conga/conga.spec.in.in	2008/01/03 16:27:48	1.91
+++ conga/conga.spec.in.in	2008/01/14 20:51:42	1.92
@@ -302,6 +302,7 @@
 - Fixed bz253727 (RFE: graphical view should be default in partiton tables view)
 - Fixed bz337041 (Add option to not fail-back service)
 - Fixed bz264161 (RFE: support setting the "__independent_subtree" attribute on cluster resources)
+- Fixed bz239387 (RFE: add timeouts for actions that can leave cluster unreachable)
 
 * Mon Aug 27 2007 Ryan McCabe <rmccabe@redhat.com> 0.10.0-6
 - Fixed bz253783
--- conga/luci/site/luci/Extensions/cluster_adapters.py	2008/01/02 21:00:32	1.277
+++ conga/luci/site/luci/Extensions/cluster_adapters.py	2008/01/14 20:51:42	1.278
@@ -40,7 +40,7 @@
 	batch_status, extract_module_status
 
 from LuciDB import manageCluster, createClusterSystems, \
-	setNodeStatus, getStorageNode, getClusterFlags, \
+	setNodeStatus, getStorageNode, getClusterFlags, del_node_flag, \
 	getClusterNode, buildClusterCreateFlags, getClusterDBObj, \
 	resolve_nodename, set_node_flag, getRicciAgent, \
 	CLUSTER_NODE_NEED_AUTH
@@ -1102,6 +1102,30 @@
 	request.RESPONSE.redirect('%s?pagetype=%s&clustername=%s&tab=2&busyfirst=true' \
 		% (baseurl, CLUSTER_CONFIG, clustername))
 
+def validate_stop_waiting(self, request):
+	fvar = GetReqVars(request, [ 'clustername', 'node', 'batchid', 'refreshurl' ])
+
+	batchid = fvar['batchid']
+	node = fvar['node']
+	clustername = fvar['clustername']
+
+	if node is None:
+		if LUCI_DEBUG_MODE is True:
+			luci_log.debug_verbose('VSW0: no node name given')
+
+	if clustername is None:
+		if LUCI_DEBUG_MODE is True:
+			luci_log.debug_verbose('VSW1: no cluster name was given')
+
+	if node and clustername:
+		try:
+			del_node_flag(self, clustername, node, batchid)
+		except Exception, e:
+			if LUCI_DEBUG_MODE is True:
+				luci_log.debug_verbose('VSW2: [%s %s %s] %r %s' \
+					% (node, clustername, batchid, e, str(e)))
+	request.RESPONSE.redirect(fvar['refreshurl'])
+
 def process_cluster_conf_editor(self, req):
 	if req.has_key('clustername'):
 		clustername = req['clustername'].strip() or None
@@ -1181,6 +1205,7 @@
 	57: deleteFenceDevice,
 	58: validateNodeFenceConfig,
 	60: validate_xvm_key_dist,
+	61: validate_stop_waiting,
 	80: process_cluster_conf_editor,
 	1001: validate_clusvc_async 
 }
@@ -1524,6 +1549,7 @@
 	isBusy = False
 	redirect_message = False
 	nodereports = list()
+	report_index = 0
 
 	fvar = GetReqVars(req, [ 'clustername', 'URL' ])
 	busy_map['nodereports'] = nodereports
@@ -1571,13 +1597,21 @@
 	# If complete, report status and remove flag.
 
 	for item in items:
+		node_report = {}
 		tasktype = item[1].getProperty(TASKTYPE)
 		if LUCI_DEBUG_MODE is True:
 			luci_log.debug_verbose('ICB3: task type for %s = %s' \
 				% (item[0], tasktype))
+		
+		ricci = item[0].split('____')[0]
+
+		node_report['node'] = ricci
+		node_report['tasktype'] = tasktype
+		node_report['clustername'] = cluname
+		node_report['report_index'] = report_index
+		report_index += 1
 
 		if tasktype == CLUSTER_ADD or tasktype == NODE_ADD:
-			node_report = {}
 			node_report['isnodecreation'] = True
 			# Default value
 			node_report['iserror'] = False
@@ -1585,14 +1619,13 @@
 
 			batch_xml = None
 			# This removes the 'flag' suffix
-			ricci = item[0].split('____')
 
 			if LUCI_DEBUG_MODE is True:
 				luci_log.debug_verbose('ICB4: using rc host %s for item %s' \
-					% (ricci[0], item[0]))
+					% (ricci, item[0]))
 
 			try:
-				rc = RicciCommunicator(ricci[0])
+				rc = RicciCommunicator(ricci)
 				if not rc:
 					rc = None
 					if LUCI_DEBUG_MODE is True:
@@ -1615,12 +1648,14 @@
 						luci_log.debug_verbose('ICB8: failed to get batch_id from %s: %r %s' % (item[0], e, str(e)))
 
 				if batch_id is not None:
+					node_report['batchid'] = batch_id
 					try:
 						batch_xml = rc.batch_report(batch_id)
 						if batch_xml is not None:
 							if LUCI_DEBUG_MODE is True:
 								luci_log.debug_verbose('ICB9: batch_xml for %s from batch_report is not None -- getting batch status' % batch_id)
 							(creation_status, total) = batch_status(batch_xml)
+
 							try:
 								if LUCI_DEBUG_MODE is True:
 									luci_log.debug_verbose('ICB10: batch status returned (%d,%d)' % (creation_status, total))
@@ -1669,7 +1704,7 @@
 				# an error was encountered
 				if LUCI_DEBUG_MODE is True:
 					luci_log.debug_verbose('ICB17: %s: CS %d for %s' \
-						% (cluname, creation_status, ricci[0]))
+						% (cluname, creation_status, ricci))
 
 				if creation_status == RICCI_CONNECT_FAILURE:
 					laststatus = item[1].getProperty(LAST_STATUS)
@@ -1737,8 +1772,8 @@
 				try:
 					if del_db_obj is True:
 						if LUCI_DEBUG_MODE is True:
-							luci_log.debug_verbose('ICB19: %s node creation failed for %s: %d: deleting DB entry' % (cluname, ricci[0], creation_status))
-						clusterfolder.manage_delObjects([ricci[0]])
+							luci_log.debug_verbose('ICB19: %s node creation failed for %s: %d: deleting DB entry' % (cluname, ricci, creation_status))
+						clusterfolder.manage_delObjects([ricci])
 						clusterfolder.manage_delObjects([item[0]])
 				except Exception, e:
 					if LUCI_DEBUG_MODE is True:
@@ -1764,8 +1799,8 @@
 								% (item[0], e, str(e)))
 					continue
 				else:
-					busy_map['busy'] = 'true'
 					isBusy = True
+					busy_map['busy'] = 'true'
 					node_report['statusmessage'] = 'Node still being created'
 					node_report['statusindex'] = creation_status
 					nodereports.append(node_report)
@@ -1783,13 +1818,11 @@
 							luci_log.debug_verbose('ICB23: last_status err: %s %d: %r %s' % (item[0], creation_status, e, str(e)))
 					continue
 		else:
-			node_report = {}
 			node_report['isnodecreation'] = False
 			# This removes the 'flag' suffix
-			ricci = item[0].split('____')
 
 			try:
-				rc = RicciCommunicator(ricci[0])
+				rc = RicciCommunicator(ricci)
 			except Exception, e:
 				rc = None
 				finished = -1
@@ -1797,7 +1830,7 @@
 
 				if LUCI_DEBUG_MODE is True:
 					luci_log.debug_verbose('ICB24: ricci error: %s: %r %s' \
-						% (ricci[0], e, str(e)))
+						% (ricci, e, str(e)))
 
 			if rc is not None:
 				batch_num = item[1].getProperty(BATCH_ID)
@@ -1825,9 +1858,8 @@
 						% (item[0], e, str(e)))
 				busy_map['busy'] = None
 			else:
-				node_report = {}
-				busy_map['busy'] = 'true'
 				isBusy = True
+				busy_map['busy'] = 'true'
 				node_report['desc'] = item[1].getProperty(FLAG_DESC)
 				nodereports.append(node_report)
 
--- conga/luci/site/luci/Extensions/LuciDB.py	2007/08/20 16:31:13	1.7
+++ conga/luci/site/luci/Extensions/LuciDB.py	2008/01/14 20:51:42	1.8
@@ -84,6 +84,38 @@
 			luci_log.debug_verbose('clearNodeStatus0: %r %s' \
 				% (e, str(e)))
 
+def del_node_flag(self, cluname, agent, batchid=None):
+	path = str('%s%s' % (CLUSTER_FOLDER_PATH, cluname))
+	objname = '%s____flag' % agent
+
+	try:
+		flag_obj = self.restrictedTraverse(str('%s/%s' % (path, objname)))
+		clusterfolder = self.restrictedTraverse(path)
+	except Exception, e:
+		if LUCI_DEBUG_MODE is True:
+			luci_log.debug_verbose('DNF0: %s/%s: %s %r %s' \
+				% (path, objname, flag_obj[0], e, str(e)))
+		return False
+
+	if batchid:
+		try:
+			bid = flag_obj.getProperty(BATCH_ID)
+			if bid != batchid:
+				raise Exception, 'mismatch: got %s, wanted %s' % (bid, batchid)
+		except Exception, e1:
+			if LUCI_DEBUG_MODE is True:
+				luci_log.debug_verbose('DNF1: unable to find flag with bid: %s for %s/%s: %r %s' % (batchid, path, objname, e1, str(e1)))
+			return False
+
+	try:
+		clusterfolder.manage_delObjects([objname])
+	except Exception, e:
+		if LUCI_DEBUG_MODE is True:
+			luci_log.debug_verbose('DNF2: %s/%s: %r %s' \
+				% (path, objname, e, str(e)))
+		return False
+	return True
+
 def set_node_flag(self, cluname, agent, batchid, task, desc):
 	path = str('%s%s' % (CLUSTER_FOLDER_PATH, cluname))
 	batch_id = str(batchid)
@@ -99,8 +131,8 @@
 		flag.manage_addProperty(TASKTYPE, task, 'string')
 		flag.manage_addProperty(FLAG_DESC, desc, 'string')
 	except Exception, e:
-		errmsg = 'SNF0: error creating flag (%s,%s,%s) at %s: %s' \
-					% (batch_id, task, desc, objpath, str(e))
+		errmsg = 'Error creating flag (bid: %s task: %s desc: %s) at %s: %s' \
+			% (batch_id, task, desc, objpath, str(e))
 		if LUCI_DEBUG_MODE is True:
 			luci_log.debug_verbose('SNF0: %r %s' % (e, errmsg))
 		raise Exception, errmsg
--- conga/luci/cluster/busy_wait-macro	2007/11/19 18:22:48	1.1
+++ conga/luci/cluster/busy_wait-macro	2008/01/14 20:51:42	1.2
@@ -1,62 +1,70 @@
 <div metal:define-macro="busywaitpage">
-	<table>
-		<tr><td>
-			<h2>Please be patient - this cluster's configuration is being modified.</h2>
-		</td></tr>
-
-		<tr><td>
-			<img src="100wait.gif" />
-		</td></tr>
+	<h2>Please be patient - this cluster's configuration is being modified.</h2>
 
-		<span tal:define="global nodereports isBusy/nodereports" />
+	<p><img src="100wait.gif" /></p>
+
+	<span tal:define="global nodereports isBusy/nodereports" />
+
+	<div tal:repeat="nodereport nodereports">
+		<tal:block
+			tal:condition="python:nodereport.get('isnodecreation') != True">
+
+			<h3><span tal:replace="nodereport/desc" /></h3>
+		</tal:block>
+
+		<tal:block
+			tal:condition="python:nodereport.get('isnodecreation') == True">
 
-		<tr tal:repeat="nodereport nodereports"><td>
 			<tal:block
-				tal:condition="python:nodereport.get('isnodecreation') != True">
+				tal:condition="python:nodereport.get('iserror') == True">
+
+				<h3><span tal:content="nodereport/desc" /></h3>
 
-				<h2><span tal:replace="nodereport/desc" /></h2>
+				<span class="errmsg" tal:content="nodereport/errormessage" />
 			</tal:block>
 
-			<tal:block
-				tal:condition="python:nodereport.get('isnodecreation') == True">
+			<tal:block tal:condition="python:nodereport.get('iserror') != True">
+				<h3><span tal:content="nodereport/desc" /></h3>
+				<em tal:content="nodereport/statusmessage | nothing" />
+				<br/>
 
-				<tal:block
-					tal:condition="python:nodereport.get('iserror') == True">
+				<tal:block tal:condition="python: nodereport['statusindex'] < 1">
+					<img src="notstarted.png" />
+				</tal:block>
 
-					<h2><span tal:content="nodereport/desc" /></h2>
+				<tal:block tal:condition="python: nodereport['statusindex'] == 1 or nodereport['statusindex'] == 2">
+					<img src="installed.png" alt="[cluster software installed]" />
+				</tal:block>
 
-					<span class="errmsg"
-						tal:content="nodereport/errormessage" />
+				<tal:block tal:condition="python: nodereport['statusindex'] == 3">
+					<img src="rebooted.png" alt="[cluster node rebooted]" />
 				</tal:block>
 
-				<tal:block
-					tal:condition="python:nodereport.get('iserror') != True">
+				<tal:block tal:condition="python: nodereport['statusindex'] == 4 or nodereport['statusindex'] == 5">
+					<img src="configured.png" alt="[cluster node configured]" />
+				</tal:block>
 
-					<h2><span tal:content="nodereport/desc" /></h2>
-					<em tal:content="nodereport/statusmessage | nothing" />
-					<br/>
-
-					<tal:block tal:condition="python: nodereport['statusindex'] < 1">
-						<img src="notstarted.png" />
-					</tal:block>
-
-					<tal:block tal:condition="python: nodereport['statusindex'] == 1 or nodereport['statusindex'] == 2">
-						<img src="installed.png" alt="[cluster software installed]" />
-					</tal:block>
-
-					<tal:block tal:condition="python: nodereport['statusindex'] == 3">
-						<img src="rebooted.png" alt="[cluster node rebooted]" />
-					</tal:block>
-
-					<tal:block tal:condition="python: nodereport['statusindex'] == 4 or nodereport['statusindex'] == 5">
-						<img src="configured.png" alt="[cluster node configured]" />
-					</tal:block>
-
-					<tal:block tal:condition="python: nodereport['statusindex'] == 6">
-						<img src="joined.png" alt="[cluster node joined cluster]" />
-					</tal:block>
+				<tal:block tal:condition="python: nodereport['statusindex'] == 6">
+					<img src="joined.png" alt="[cluster node joined cluster]" />
 				</tal:block>
 			</tal:block>
-		</td></tr>
-	</table>
+		</tal:block>
+
+		<div>
+			<form method="post" action=""
+				tal:attributes="name python:'stop_waiting_form%s' % nodereport.get('report_index')">
+
+				<input type="hidden" name="pagetype" value="61" />
+				<input type="hidden" name="clustername"
+					tal:attributes="value nodereport/clustername | nothing" />
+				<input type="hidden" name="node"
+					tal:attributes="value nodereport/node | nothing" />
+				<input type="hidden" name="refreshurl"
+					tal:attributes="value nodereport/refreshurl | request/URL |string:." />
+				<a href="javascript:void(0)"
+					tal:attributes="onclick python:'javascript:document.stop_waiting_form%s.submit()' % nodereport.get('report_index')">Stop waiting for this job to complete</a>
+			</form>
+		</div>
+	</div>
+	<hr/>
 </div>



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-04-14 15:58 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-04-14 15:58 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL5
Changes by:	rmccabe at sourceware.org	2008-04-14 15:58:35

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: StorageReport.py 
	ricci/modules/cluster: ClusterStatus.cpp 
	ricci/modules/rpm: PackageHandler.cpp 
	ricci/modules/service: ServiceManager.cpp 

Log message:
	fix bz441580: conga should install 'sg3_utils' and start service 'scsi_reserve' when scsi fencing is used

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.77&r2=1.45.2.78
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/StorageReport.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.20.2.7&r2=1.20.2.8
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/cluster/ClusterStatus.cpp.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.15.2.6&r2=1.15.2.7
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/rpm/PackageHandler.cpp.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.9.2.8&r2=1.9.2.9
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/service/ServiceManager.cpp.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.5.2.6&r2=1.5.2.7

--- conga/conga.spec.in.in	2008/04/11 06:54:43	1.45.2.77
+++ conga/conga.spec.in.in	2008/04/14 15:58:35	1.45.2.78
@@ -292,6 +292,7 @@
 ###  changelog ###
 %changelog
 * Thu Apr 10 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-8
+- Fix bz441580 (conga should install 'sg3_utils' and start service 'scsi_reserve' when scsi fencing is used)
 - Fix bz441573 ("nodename" field for fence_scsi disabled when adding a new fence device/instance)
 
 * Wed Feb 27 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-6
--- conga/luci/site/luci/Extensions/StorageReport.py	2008/01/23 04:44:32	1.20.2.7
+++ conga/luci/site/luci/Extensions/StorageReport.py	2008/04/14 15:58:35	1.20.2.8
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2007 Red Hat, Inc.
+# Copyright (C) 2006-2008 Red Hat, Inc.
 #
 # This program is free software; you can redistribute
 # it and/or modify it under the terms of version 2 of the
--- conga/ricci/modules/cluster/ClusterStatus.cpp	2008/02/12 17:40:38	1.15.2.6
+++ conga/ricci/modules/cluster/ClusterStatus.cpp	2008/04/14 15:58:35	1.15.2.7
@@ -218,6 +218,7 @@
 		run_initd("clvmd", true, false);
 		run_initd("gfs", true, false);
 		run_initd("rgmanager", true, true);
+		run_initd("scsi_reserve", true, false);
 
 		if (enable_services) {
 			// enable them on boot
@@ -239,6 +240,7 @@
 			run_chkconfig("clvmd", true);
 			run_chkconfig("gfs", true);
 			run_chkconfig("rgmanager", true);
+			run_chkconfig("scsi_reserve", true);
 		}
 	} else if (stat.get_attr("cluster_version") == "5") {
 		try {
@@ -266,6 +268,7 @@
 		run_initd("clvmd", true, false);
 		run_initd("gfs", true, false);
 		run_initd("gfs2", true, false);
+		run_initd("scsi_reserve", true, false);
 		run_initd("rgmanager", true, true);
 
 		if (enable_services) {
@@ -278,6 +281,7 @@
 			run_chkconfig("clvmd", true);
 			run_chkconfig("gfs", true);
 			run_chkconfig("gfs2", true);
+			run_chkconfig("scsi_reserve", true);
 			run_chkconfig("rgmanager", true);
 		}
 	} else {
--- conga/ricci/modules/rpm/PackageHandler.cpp	2008/02/12 17:40:39	1.9.2.8
+++ conga/ricci/modules/rpm/PackageHandler.cpp	2008/04/14 15:58:35	1.9.2.9
@@ -493,6 +493,7 @@
 
 	PackageSet set("Clustered Storage");
 	set.packages.push_back("lvm2-cluster");
+	set.packages.push_back("sg3_utils");
 
 	if (RHEL4 || FC5) {
 		set.packages.push_back("GFS");
--- conga/ricci/modules/service/ServiceManager.cpp	2008/02/12 17:40:39	1.5.2.6
+++ conga/ricci/modules/service/ServiceManager.cpp	2008/04/14 15:58:35	1.5.2.7
@@ -519,11 +519,13 @@
 		descr = "Shared Storage: clvmd, gfs";
 		servs.push_back("clvmd");
 		servs.push_back("gfs");
+		servs.push_back("scsi_reserve");
 	} else if (RHEL5 || FC6) {
 		descr = "Shared Storage: clvmd, gfs, gfs2";
 		servs.push_back("clvmd");
 		servs.push_back("gfs");
 		servs.push_back("gfs2");
+		servs.push_back("scsi_reserve");
 	}
 	s = ServiceSet(name, descr);
 	if (populate_set(s, servs))



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-04-18 20:34 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-04-18 20:34 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL5
Changes by:	rmccabe at sourceware.org	2008-04-18 20:34:51

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: cluster_adapters.py 

Log message:
	Fix bz443152

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.81&r2=1.45.2.82
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.120.2.43&r2=1.120.2.44

--- conga/conga.spec.in.in	2008/04/18 04:15:52	1.45.2.81
+++ conga/conga.spec.in.in	2008/04/18 20:34:50	1.45.2.82
@@ -292,6 +292,7 @@
 ###  changelog ###
 %changelog
 * Thu Apr 10 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-8
+- Fix bz443152 (Exception generated when adding or updating failover domains)
 - Fix bz441580 (conga should install 'sg3_utils' and start service 'scsi_reserve' when scsi fencing is used)
 - Fix bz441573 ("nodename" field for fence_scsi disabled when adding a new fence device/instance)
 - Fix bz442997 (Luci inserts "hostname" instead of "ipaddr" for rsa II fencing device)
--- conga/luci/site/luci/Extensions/cluster_adapters.py	2008/03/12 15:13:12	1.120.2.43
+++ conga/luci/site/luci/Extensions/cluster_adapters.py	2008/04/18 20:34:50	1.120.2.44
@@ -1017,7 +1017,7 @@
 			luci_log.debug_verbose('validateFdom0: no model')
 		return (False, { 'errors': [ 'Unable to retrieve the cluster configuration for %s. The configuration XML may contain errors' % clustername ]})
 
-	ret = validate_fdom(self, request)
+	ret = validate_fdom(model, request)
 	if ret[0] is not True:
 		return ret
 



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-04-28  3:49 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-04-28  3:49 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL4
Changes by:	rmccabe at sourceware.org	2008-04-28 03:49:08

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: ResourceHandler.py 
	make           : version.in 

Log message:
	- Fix bz444195 (conga writes 'exportpath' instead of 'export' attribute for netfs)

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.67.2.27&r2=1.67.2.28
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ResourceHandler.py.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.2.2.2&r2=1.2.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/make/version.in.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.28.2.12&r2=1.28.2.13

--- conga/conga.spec.in.in	2008/04/21 18:15:17	1.67.2.27
+++ conga/conga.spec.in.in	2008/04/28 03:49:07	1.67.2.28
@@ -300,6 +300,9 @@
 
 
 %changelog
+* Mon Apr 29 2008 Ryan McCabe <rmccabe@redhat.com> 0.11.1-4
+- Fix bz444195 (conga writes 'exportpath' instead of 'export' attribute for netfs)
+
 * Fri Apr 18 2008 Ryan McCabe <rmccabe@redhat.com> 0.11.1-3
 - Fix bz442729 (Add UI support for ssh for fence agents that now support it)
 
--- conga/luci/site/luci/Extensions/ResourceHandler.py	2008/03/25 01:27:12	1.2.2.2
+++ conga/luci/site/luci/Extensions/ResourceHandler.py	2008/04/28 03:49:07	1.2.2.3
@@ -271,10 +271,10 @@
 			luci_log.debug_verbose('addNfsm7: %s' % err)
 
 	try:
-		exportpath = form['exportpath'].strip()
+		exportpath = form['export'].strip()
 		if not exportpath:
 			raise Exception, 'No export path was given for "%s"' % rname
-		res.addAttribute('exportpath', exportpath)
+		res.addAttribute('export', exportpath)
 	except Exception, e:
 		err = str(e)
 		errors.append(err)
--- conga/make/version.in	2008/04/21 18:16:00	1.28.2.12
+++ conga/make/version.in	2008/04/28 03:49:07	1.28.2.13
@@ -1,2 +1,2 @@
 VERSION=0.11.1
-RELEASE=3
+RELEASE=4



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-04-28  3:54 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-04-28  3:54 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL5
Changes by:	rmccabe at sourceware.org	2008-04-28 03:54:18

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: ResourceHandler.py 
	make           : version.in 

Log message:
	- Fix bz444381 (conga writes 'exportpath' instead of 'export' attribute for netfs)

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.83&r2=1.45.2.84
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ResourceHandler.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.3&r2=1.1.4.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/make/version.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.21.2.37&r2=1.21.2.38

--- conga/conga.spec.in.in	2008/04/23 17:27:10	1.45.2.83
+++ conga/conga.spec.in.in	2008/04/28 03:54:18	1.45.2.84
@@ -291,7 +291,10 @@
 
 ###  changelog ###
 %changelog
--* Fri Apr 18 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-8
+* Mon Apr 27 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-9
+- Fix bz444381 (conga writes 'exportpath' instead of 'export' attribute for netfs)
+
+* Fri Apr 18 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-8
 - Fix bz441580 (conga should install 'sg3_utils' and start service 'scsi_reserve' when scsi fencing is used)
 - Fix bz441573 ("nodename" field for fence_scsi disabled when adding a new fence device/instance)
 - Fix bz442997 (Luci inserts "hostname" instead of "ipaddr" for rsa II fencing device)
--- conga/luci/site/luci/Extensions/ResourceHandler.py	2008/03/12 15:13:12	1.1.4.3
+++ conga/luci/site/luci/Extensions/ResourceHandler.py	2008/04/28 03:54:18	1.1.4.4
@@ -274,7 +274,7 @@
 		exportpath = form['exportpath'].strip()
 		if not exportpath:
 			raise Exception, 'No export path was given for "%s"' % rname
-		res.addAttribute('exportpath', exportpath)
+		res.addAttribute('export', exportpath)
 	except Exception, e:
 		err = str(e)
 		errors.append(err)
--- conga/make/version.in	2008/04/11 06:54:43	1.21.2.37
+++ conga/make/version.in	2008/04/28 03:54:18	1.21.2.38
@@ -1,2 +1,2 @@
 VERSION=0.12.0
-RELEASE=8
+RELEASE=9



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-05-12 17:04 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-05-12 17:04 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL5
Changes by:	rmccabe at sourceware.org	2008-05-12 17:04:41

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: LuciValidation.py 
	make           : version.in 
	ricci/modules/cluster/clumon: Makefile 

Log message:
	Fix bz444210 (Adding multiple fence devices at the same time causes duplicate entries)

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.85&r2=1.45.2.86
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciValidation.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.6.2.3&r2=1.6.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/make/version.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.21.2.39&r2=1.21.2.40
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/cluster/clumon/Makefile.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.4.2.3&r2=1.4.2.4

--- conga/conga.spec.in.in	2008/05/12 15:13:32	1.45.2.85
+++ conga/conga.spec.in.in	2008/05/12 17:04:41	1.45.2.86
@@ -292,6 +292,7 @@
 ###  changelog ###
 %changelog
 * Mon Apr 27 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-9
+- Fix bz444210 (Adding multiple fence devices at the same time causes duplicate entries)
 - Fix bz444381 (conga writes 'exportpath' instead of 'export' attribute for netfs)
 
 * Fri Apr 18 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-8
--- conga/luci/site/luci/Extensions/LuciValidation.py	2008/03/12 15:13:12	1.6.2.3
+++ conga/luci/site/luci/Extensions/LuciValidation.py	2008/05/12 17:04:41	1.6.2.4
@@ -87,7 +87,7 @@
 		fence_method.addAttribute('name', str(method_id))
 		levels[min(1, fence_level - 1)] = fence_method
 	except Exception, e:
-		method_id = fence_level
+		method_id = str(fence_level)
 		fence_method = Method()
 		fence_method.addAttribute('name', str(method_id))
 
--- conga/make/version.in	2008/05/12 15:13:32	1.21.2.39
+++ conga/make/version.in	2008/05/12 17:04:41	1.21.2.40
@@ -1,2 +1,2 @@
-VERSION=0.14.0
-RELEASE=1
+VERSION=0.12.0
+RELEASE=9
--- conga/ricci/modules/cluster/clumon/Makefile	2008/05/12 15:13:33	1.4.2.3
+++ conga/ricci/modules/cluster/clumon/Makefile	2008/05/12 17:04:41	1.4.2.4
@@ -11,7 +11,6 @@
 top_srcdir=../../..
 UNINSTALL=${top_srcdir}/scripts/uninstall.pl
 
-include ${top_srcdir}/make/version.in
 include ${top_srcdir}/make/defines.mk
 
 all:



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-05-12 17:09 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-05-12 17:09 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL4
Changes by:	rmccabe at sourceware.org	2008-05-12 17:09:53

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: LuciValidation.py 
	make           : version.in 

Log message:
	fix 446082: Adding multiple fence devices at the same time causes duplicate entries

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.67.2.28&r2=1.67.2.29
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciValidation.py.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.9.2.1&r2=1.9.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/make/version.in.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.28.2.13&r2=1.28.2.14

--- conga/conga.spec.in.in	2008/04/28 03:49:07	1.67.2.28
+++ conga/conga.spec.in.in	2008/05/12 17:09:53	1.67.2.29
@@ -300,6 +300,9 @@
 
 
 %changelog
+* Mon May 12 2008 Ryan McCabe <rmccabe@redhat.com> 0.11.1-5
+- Fix bz446082 (Adding multiple fence devices at the same time causes duplicate entries)
+
 * Mon Apr 29 2008 Ryan McCabe <rmccabe@redhat.com> 0.11.1-4
 - Fix bz444195 (conga writes 'exportpath' instead of 'export' attribute for netfs)
 
--- conga/luci/site/luci/Extensions/LuciValidation.py	2008/03/25 01:27:12	1.9.2.1
+++ conga/luci/site/luci/Extensions/LuciValidation.py	2008/05/12 17:09:53	1.9.2.2
@@ -87,7 +87,7 @@
 		fence_method.addAttribute('name', str(method_id))
 		levels[min(1, fence_level - 1)] = fence_method
 	except Exception, e:
-		method_id = fence_level
+		method_id = str(fence_level)
 		fence_method = Method()
 		fence_method.addAttribute('name', str(method_id))
 
--- conga/make/version.in	2008/04/28 03:49:07	1.28.2.13
+++ conga/make/version.in	2008/05/12 17:09:53	1.28.2.14
@@ -1,2 +1,2 @@
 VERSION=0.11.1
-RELEASE=4
+RELEASE=5



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-07-14 16:29 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-07-14 16:29 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL5
Changes by:	rmccabe at sourceware.org	2008-07-14 16:29:29

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: cluster_adapters.py 

Log message:
	Fix bz433089

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.92&r2=1.45.2.93
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.120.2.44&r2=1.120.2.45

--- conga/conga.spec.in.in	2008/07/14 16:03:34	1.45.2.92
+++ conga/conga.spec.in.in	2008/07/14 16:29:28	1.45.2.93
@@ -301,6 +301,7 @@
 - Fix bz206570 (RFE: vm list from ricci)
 - Fix bz430737 (Conga should install the 'cmirror' package when clustered storage is requested)
 - Fix bz379461 (Conga doesn't have the option for modulename for drac fencing)
+- Fix bz433089 (when adding multiple nodes the order is reversed.)
 
 * Fri Apr 18 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-8
 - Fix bz441580 (conga should install 'sg3_utils' and start service 'scsi_reserve' when scsi fencing is used)
--- conga/luci/site/luci/Extensions/cluster_adapters.py	2008/04/18 20:34:50	1.120.2.44
+++ conga/luci/site/luci/Extensions/cluster_adapters.py	2008/07/14 16:29:28	1.120.2.45
@@ -545,7 +545,9 @@
 	next_node_id = 1
 
 	try:
-		for x in system_list:
+		skeys = system_list.keys()
+		skeys.sort()
+		for x in skeys:
 			i = system_list[x]
 
 			try:



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-07-15 18:20 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-07-15 18:20 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL5
Changes by:	rmccabe at sourceware.org	2008-07-15 18:20:02

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: StorageReport.py 
	luci/storage   : form-macros 

Log message:
	fix bz414551

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.96&r2=1.45.2.97
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/StorageReport.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.20.2.8&r2=1.20.2.9
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/storage/form-macros.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.17.2.13&r2=1.17.2.14

--- conga/conga.spec.in.in	2008/07/14 22:21:45	1.45.2.96
+++ conga/conga.spec.in.in	2008/07/15 18:19:58	1.45.2.97
@@ -305,6 +305,7 @@
 - Fix bz441581 (Don't allow both label and device for qdisk config if only one can be specified)
 - Fix bz223785 (Storage 'Display Devices by' option does not work)
 - Fix bz250439 (conga is unable to delete snapshot volumes)
+- Fix bz414551 (Sector size list is improperly sorted)
 
 * Fri Apr 18 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.0-8
 - Fix bz441580 (conga should install 'sg3_utils' and start service 'scsi_reserve' when scsi fencing is used)
--- conga/luci/site/luci/Extensions/StorageReport.py	2008/04/14 15:58:35	1.20.2.8
+++ conga/luci/site/luci/Extensions/StorageReport.py	2008/07/15 18:19:58	1.20.2.9
@@ -1621,9 +1621,10 @@
 		mutable = var.getAttribute('mutable') == 'true'
 		var_type = var.getAttribute('type')
 		value = var.getAttribute('value')
+		def_value = value
 
 		d_units = ''
-		if name in ('size', 'extent_size', 'block_size', 'size_free', 'partition_begin' ):
+		if name in ('size', 'extent_size', 'block_size', 'journal_size', 'size_free', 'partition_begin' ):
 			d_units = 'bytes'
 		if 'percent' in name:
 			d_units = '%'
@@ -1697,6 +1698,7 @@
 				'name': name,
 				'pretty_name': get_pretty_prop_name(name),
 				'type': d_type,
+				'default_val': def_value,
 				'value': d_value,
 				'units': d_units,
 				'validation': validation_data,
--- conga/luci/storage/form-macros	2008/07/14 21:59:09	1.17.2.13
+++ conga/luci/storage/form-macros	2008/07/15 18:19:59	1.17.2.14
@@ -867,21 +867,28 @@
 
 							<tal:block tal:condition="python:prop_type == 'select'">
 								<select tal:define="prop_options prop/value" tal:attributes="name p">
-									<tal:block
-										tal:condition="python: prop_units != 'bytes'"
-										tal:repeat="prop_opt prop_options">
-										<option tal:attributes="value prop_opt" />
-										<span tal:replace="prop_opt" />
+									<tal:block tal:condition="python: prop_units != 'bytes'">
+										<tal:block tal:repeat="prop_opt prop_options">
+											<option tal:attributes="value prop_opt" />
+											<span tal:replace="prop_opt" />
+										</tal:block>
 									</tal:block>
-									<tal:block
-										tal:condition="python: prop_units == 'bytes'"
-										tal:repeat="prop_opt prop_options">
-										<option tal:attributes="value prop_opt" />
-										<span
+
+									<tal:block tal:condition="python: prop_units == 'bytes'">
+										<tal:block
 											tal:define="
-												dummy python: here.bytes_to_value_units(prop_opt);
-												value python: str(dummy[0]) + ' ' + str(dummy[1])"
-											tal:replace="value" />
+													dummy2 python:map(lambda x: int(x), prop_options);
+													dummy3 python:dummy2.sort()"
+											tal:repeat="prop_opt dummy2">
+												<option tal:attributes="
+															value prop_opt;
+															selected python:prop.get('default_val') == str(prop_opt) and 'selected' or ''" />
+												<span
+													tal:define="
+														dummy python: here.bytes_to_value_units(prop_opt);
+														value python: str(dummy[0]) + ' ' + str(dummy[1])"
+													tal:replace="value" />
+										</tal:block>
 									</tal:block>
 								</select>
 							</tal:block>



^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens ...
@ 2008-09-17  6:29 rmccabe
  0 siblings, 0 replies; 21+ messages in thread
From: rmccabe @ 2008-09-17  6:29 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL5
Changes by:	rmccabe at sourceware.org	2008-09-17 06:29:55

Modified files:
	.              : conga.spec.in.in 
	luci/site/luci/Extensions: RicciQueries.py cluster_adapters.py 

Log message:
	Fix bz459623

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.101&r2=1.45.2.102
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/RicciQueries.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/cluster_adapters.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.120.2.46&r2=1.120.2.47

--- conga/conga.spec.in.in	2008/08/27 14:59:17	1.45.2.101
+++ conga/conga.spec.in.in	2008/09/17 06:29:54	1.45.2.102
@@ -315,6 +315,7 @@
 * Wed Aug 27 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.1-4
 - Fix bz459562 (charset configuration fix for luci)
 - Fix bz459469 (An unknown device type was given: "gnbd.")
+- Fix bz459623 (Conga error adding new node to existing cluster)
 
 * Thu Aug 07 2008 Ryan McCabe <rmccabe@redhat.com> 0.12.1-3
 - More fixes for bz429350
--- conga/luci/site/luci/Extensions/RicciQueries.py	2008/03/12 15:13:12	1.1.4.10
+++ conga/luci/site/luci/Extensions/RicciQueries.py	2008/09/17 06:29:54	1.1.4.11
@@ -6,12 +6,10 @@
 # Free Software Foundation.
 
 from xml.dom import minidom
-from ricci_communicator import RicciCommunicator
+from ricci_communicator import RicciCommunicator, batch_status
 from LuciSyslog import get_logger
 from conga_constants import LUCI_DEBUG_MODE
 
-
-
 luci_log = get_logger()
 
 def addClusterNodeBatch(cluster_name,
@@ -115,7 +113,7 @@
 	batch.append('<module name="cluster">')
 	batch.append('<request API_version="1.0">')
 	batch.append('<function_call name="start_node">')
-	batch.append('<var mutable="false" name="enable_services" type="boolean" value="true"/>"')
+	batch.append('<var mutable="false" name="enable_services" type="boolean" value="true"/>')
 	batch.append('</function_call>')
 	batch.append('</request>')
 	batch.append('</module>')
@@ -342,6 +340,30 @@
 	ricci_xml = rc.batch_run(batch_str)
 	return batchAttemptResult(ricci_xml)
 
+def setClusterConfSync(rc, clusterconf, propagate=True):
+	if propagate is True:
+		propg = 'true'
+	else:
+		propg = 'false'
+
+	conf = str(clusterconf).replace('<?xml version="1.0"?>', '')
+	conf = conf.replace('<?xml version="1.0" ?>', '')
+	conf = conf.replace('<? xml version="1.0"?>', '')
+	conf = conf.replace('<? xml version="1.0" ?>', '')
+
+	batch_str = '<module name="cluster"><request API_version="1.0"><function_call name="set_cluster.conf"><var type="boolean" name="propagate" mutable="false" value="%s"/><var type="xml" mutable="false" name="cluster.conf">%s</var></function_call></request></module>' % (propg, conf)
+
+	ricci_xml = rc.batch_run(batch_str, async=False)
+	if not ricci_xml:
+		return False
+	batch_xml = ricci_xml.getElementsByTagName('batch')
+	if not batch_xml:
+		return None
+	(num, total) = batch_status(batch_xml[0])
+	if num == total:
+		return True
+	return False
+
 def getNodeLogs(rc):
 	from time import time, ctime
 
--- conga/luci/site/luci/Extensions/cluster_adapters.py	2008/07/17 16:36:56	1.120.2.46
+++ conga/luci/site/luci/Extensions/cluster_adapters.py	2008/09/17 06:29:54	1.120.2.47
@@ -378,8 +378,8 @@
 
 	if cluster_os is None:
 		if LUCI_DEBUG_MODE is True:
-			luci_log.debug_verbose('Unable to determine cluster OS for %s' % clustername)
-		return (False, { 'errors': [ 'Unable to determine the version of the cluster suite this cluster is running' ] })
+			luci_log.debug_verbose('Unable to determine the operating system version for %s' % clustername)
+		return (False, { 'errors': [ 'Unable to determine the version of the cluster software this cluster is running' ] })
 
 	shared_storage = False
 	try:
@@ -547,41 +547,22 @@
 	try:
 		skeys = system_list.keys()
 		skeys.sort()
+		batch_node = rq.addClusterNodeBatch(clustername,
+						True,
+						True,
+						shared_storage,
+						False,
+						download_pkgs,
+						model.GULM_ptr is not None,
+						reboot_nodes)
+		batch_node_xml = minidom.parseString('<batch>%s</batch>' % batch_node)
+		batch_node_xml = batch_node_xml.getElementsByTagName('batch')[0]
+		if not batch_node_xml:
+			raise Exception, 'batch is blank'
+
 		for x in skeys:
 			i = system_list[x]
-
-			try:
-				batch_node = rq.addClusterNodeBatch(clustername,
-								True,
-								True,
-								shared_storage,
-								False,
-								download_pkgs,
-								model.GULM_ptr is not None,
-								reboot_nodes)
-				if not batch_node:
-					raise Exception, 'batch is blank'
-				system_list[x]['batch'] = batch_node
-			except Exception, e:
-				cur_system['errors'] = True
-				incomplete = True
-
-				try:
-					if not cur_system['prev_auth']:
-						rc.unauth()
-						del cur_system['trusted']
-				except Exception, e:
-					if LUCI_DEBUG_MODE is True:
-						luci_log.debug_verbose('VACN12: %s: %r %s' \
-							% (cur_host, e, str(e)))
-
-				errors.append('Unable to initiate cluster join for node "%s"' \
-					% cur_host)
-				if LUCI_DEBUG_MODE is True:
-					luci_log.debug_verbose('VACN13: %s: %r %s' \
-						% (cur_host, e, str(e)))
-				continue
-
+			system_list[x]['batch'] = batch_node_xml
 			next_node_id += 1
 			new_node = ClusterNode()
 			new_node.attr_hash['name'] = str(i['host'])
@@ -600,36 +581,20 @@
 		if not conf_str:
 			raise Exception, 'Unable to save the new cluster model'
 
-		batch_number, result = rq.setClusterConf(cluster_ricci, conf_str)
-		if not batch_number or not result:
-			raise Exception, 'batch or result is None'
+		# Propagate the new cluster.conf to the existing nodes
+		# before having any of the new nodes join. If this fails,
+		# abort the whole process.
+		result = rq.setClusterConfSync(cluster_ricci, conf_str)
+		if result != True:
+			errors.append('Unable to update the cluster configuration on existing cluster nodes')
+			request.SESSION.set('add_node', add_cluster)
+			return (False, { 'errors': errors, 'messages': messages })
 	except Exception, e:
 		incomplete = True
 		errors.append('Unable to generate the new cluster configuration')
 		if LUCI_DEBUG_MODE is True:
 			luci_log.debug_verbose('VACN14: %s' % e)
 
-	# Propagate the new cluster.conf to the existing nodes
-	# before having any of the new nodes join. If this fails,
-	# abort the whole process.
-	try:
-		while True:
-			batch_ret = cluster_ricci.batch_status(batch_number)
-			code = batch_ret[0]
-			if code is True:
-				break
-			if code == -1:
-				errors.append(batch_ret[1])
-				raise Exception, str(batch_ret[1])
-			if code is False:
-				time.sleep(0.5)
-	except Exception, e:
-		incomplete = True
-		errors.append('Unable to update the cluster node list for %s' \
-			% clustername)
-		if LUCI_DEBUG_MODE is True:
-			luci_log.debug_verbose('VACN15: %r %s' % (e, str(e)))
-
 	if incomplete or len(errors) > 0:
 		request.SESSION.set('add_node', add_cluster)
 		return (False, { 'errors': errors, 'messages': messages })



^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2008-09-17  6:29 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-14 20:51 [Cluster-devel] conga ./conga.spec.in.in luci/site/luci/Extens rmccabe
  -- strict thread matches above, loose matches on Subject: below --
2008-09-17  6:29 rmccabe
2008-07-15 18:20 rmccabe
2008-07-14 16:29 rmccabe
2008-05-12 17:09 rmccabe
2008-05-12 17:04 rmccabe
2008-04-28  3:54 rmccabe
2008-04-28  3:49 rmccabe
2008-04-18 20:34 rmccabe
2008-04-14 15:58 rmccabe
2007-10-09 21:41 rmccabe
2007-10-09 21:33 rmccabe
2007-10-09 21:31 rmccabe
2007-10-03  2:16 rmccabe
2007-09-20 22:37 rmccabe
2007-08-17 20:26 rmccabe
2007-06-25 19:10 rmccabe
2007-05-02  2:39 rmccabe
2007-05-02  2:36 rmccabe
2006-12-14  0:01 rmccabe
2006-11-29 22:33 kupcevic

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