[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[Cluster-devel] conga luci/cluster/fence-macros luci/cluster/v ...



CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL5
Changes by:	rmccabe sourceware org	2010-01-07 18:08:37

Modified files:
	luci/cluster   : fence-macros validate_fence.js 
	luci/homebase  : form-macros 
	luci/plone-custom: conga.js 
	luci/site/luci/Extensions: FenceHandler.py LuciValidation.py 
	                           ResourceHandler.py 
	                           homebase_adapters.py 
	luci/site/luci/Extensions/ClusterModel: FenceDeviceAttr.py 
	                                        ModelBuilder.py 
	luci/test      : CGA_0160_Add_User.py 
	                 CGA_0170_Online_Documentation_Portlet.py 
	                 CGA_0200_Create_cluster.py cleaner.py 
	                 congaDemoTests.py conga_Helpers.py 
	                 conga_suite.py loggerObject.py 
	luci/utils     : luci_admin 
	ricci/modules/cluster: Clusvcadm.cpp 
	ricci/ricci    : Ricci.cpp 

Log message:
	Sync with RHEL5.5 tree

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/fence-macros.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2.2.12&r2=1.2.2.13
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/validate_fence.js.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.2.11&r2=1.1.2.12
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/homebase/form-macros.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.44.2.14&r2=1.44.2.15
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/conga.js.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.3.2.7&r2=1.3.2.8
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.17&r2=1.4.2.18
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.12&r2=1.6.2.13
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.8&r2=1.1.4.9
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/homebase_adapters.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.34.2.17&r2=1.34.2.18
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/FenceDeviceAttr.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.5.2.2&r2=1.5.2.3
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.12&r2=1.1.4.13
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/test/CGA_0160_Add_User.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.7.2.1&r2=1.7.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/test/CGA_0170_Online_Documentation_Portlet.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/luci/test/CGA_0200_Create_cluster.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.4.2.2&r2=1.4.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/test/cleaner.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/test/congaDemoTests.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.11.2.2&r2=1.11.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/test/conga_Helpers.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.14.2.3&r2=1.14.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/test/conga_suite.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.11.2.2&r2=1.11.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/test/loggerObject.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2.4.1&r2=1.2.4.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/utils/luci_admin.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.50.2.7&r2=1.50.2.8
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/cluster/Clusvcadm.cpp.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.7.2.7&r2=1.7.2.8
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/ricci/Ricci.cpp.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.18.2.6&r2=1.18.2.7

--- conga/luci/cluster/fence-macros	2009/05/14 21:05:58	1.2.2.12
+++ conga/luci/cluster/fence-macros	2010/01/07 18:08:34	1.2.2.13
@@ -190,6 +190,10 @@
 		<tal:block metal:use-macro="here/fence-macros/macros/fence-form-drac" />
 	</tal:block>
 
+	<tal:block tal:condition="python: cur_fence_type == 'fence_idrac'">
+		<tal:block metal:use-macro="here/fence-macros/macros/fence-form-idrac" />
+	</tal:block>
+
 	<tal:block tal:condition="python: cur_fence_type == 'fence_rsa'">
 		<tal:block metal:use-macro="here/fence-macros/macros/fence-form-rsa" />
 	</tal:block>
@@ -354,6 +358,7 @@
 	<option name="fence_bullpap" value="fence_bullpap">Bull PAP</option>
 	<option name="fence_rps10" value="fence_rps10">RPS10 Serial Switch</option>
 	<option name="fence_drac" value="fence_drac">Dell DRAC</option>
+	<option name="fence_idrac" value="fence_idrac">Dell iDRAC</option>
 	<option name="fence_ipmilan" value="fence_ipmilan">IPMI Lan</option>
 	<option name="fence_xvm" value="fence_xvm">Virtual Machine Fencing</option>
 	<option name="fence_scsi" value="fence_scsi">SCSI Fencing</option>
@@ -725,6 +730,79 @@
 	</div>
 </div>
 
+<div metal:define-macro="fence-form-idrac"
+	tal:attributes="id cur_fencedev/name | nothing">
+
+	<div id="fence_idrac" class="fencedev">
+		<table>
+			<tr>
+				<td><strong class="cluster">Fence Type</strong></td>
+				<td>Dell iDrac</td>
+			</tr>
+			<tr>
+				<td>Name</td>
+				<td>
+					<input name="name" type="text"
+						tal:attributes="value cur_fencedev/name | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>IP Address</td>
+				<td>
+					<input name="ipaddr" type="text"
+						tal:attributes="value cur_fencedev/ipaddr | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>Login</td>
+				<td>
+					<input name="login" type="text"
+						tal:attributes="value cur_fencedev/login | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>Password</td>
+				<td>
+					<input name="passwd" type="password" autocomplete="off"
+						tal:attributes="value cur_fencedev/passwd | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>
+					<span title="Full path to a script to generate fence password">Password Script (optional)</span>
+				</td>
+				<td>
+					<input type="text" name="passwd_script"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/passwd_script | nothing" />
+				</td>
+			</tr>
+			<tr tal:condition="exists:clusterinfo/has_fence_ssh">
+				<td>
+					<span title="Enable SSH operation">Use SSH</span>
+				</td>
+				<td>
+					<input tal:condition="exists:cur_fencedev"
+						type="checkbox" name="secure"
+						tal:attributes="
+							checked python:(cur_fencedev and cur_fencedev.has_key('secure') and (cur_fencedev['secure'] == '1' or cur_fencedev['secure'].lower() == 'true')) and 'checked' or ''" />
+					<input tal:condition="not:exists:cur_fencedev"
+						type="checkbox" name="secure" />
+				</td>
+			</tr>
+		</table>
+
+		<tal:block tal:condition="exists: cur_fencedev">
+			<input type="hidden" name="existing_device" value="1" />
+			<input type="hidden" name="orig_name"
+				tal:attributes="value cur_fencedev/name | nothing" />
+		</tal:block>
+
+		<input type="hidden" name="fence_type" value="fence_idrac" />
+	</div>
+</div>
+
 <div metal:define-macro="fence-form-rsa"
 	tal:attributes="id cur_fencedev/name | nothing">
 
@@ -1646,6 +1724,7 @@
 	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-wti" />
 	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ilo" />
 	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-drac" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-idrac" />
 	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-rsa" />
 	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-rsb" />
 	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-brocade" />
@@ -1762,6 +1841,15 @@
 				</td>
 			</tr>
 
+			<tr>
+				<td>Managed System</td>
+				<td>
+					<input name="managed" type="text"
+						tal:attributes="
+							value cur_instance/managed | nothing" />
+				</td>
+			</tr>
+
 			<tr><td colspan="2">
 				<div class="hbSubmit">
 					<tal:block tal:condition="exists:cur_fence_instance_id">
--- conga/luci/cluster/validate_fence.js	2009/04/23 20:38:51	1.1.2.11
+++ conga/luci/cluster/validate_fence.js	2010/01/07 18:08:34	1.1.2.12
@@ -20,7 +20,7 @@
 fence_inst_validator['vixel'] = [ 'port' ];
 fence_inst_validator['wti'] = [ 'port', 'secure' ];
 fence_inst_validator['xvm'] = [ 'domain' ];
-fence_inst_validator['lpar'] = [ 'partition' ];
+fence_inst_validator['lpar'] = [ 'partition', 'managed' ];
 fence_inst_validator['vmware'] = [ 'port' ];
 
 var fence_validator = [];
@@ -29,6 +29,7 @@
 fence_validator['brocade'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script' ];
 fence_validator['bullpap'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script' ];
 fence_validator['drac'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script', 'secure' ];
+fence_validator['idrac'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script', 'secure' ];
 fence_validator['egenera'] = [ 'cserver' ];
 fence_validator['gnbd'] = [ 'servers' ];
 fence_validator['ilo'] = [ 'hostname', 'login', 'passwd', 'passwd_script', 'secure' ];
@@ -150,6 +151,7 @@
 field_validator['pserver'] = validate_field_str;
 field_validator['domain'] = validate_field_str;
 field_validator['partition'] = validate_field_str;
+field_validator['managed'] = validate_field_str;
 
 function validate_fence(form) {
 	var errors = [];
--- conga/luci/homebase/form-macros	2008/02/08 21:56:33	1.44.2.14
+++ conga/luci/homebase/form-macros	2010/01/07 18:08:34	1.44.2.15
@@ -210,6 +210,17 @@
 			</tal:block>
 		</select>
 
+		<table class="homebase">
+			<tr class="homebase">
+				<td>
+					Set user password
+				</td>
+				<td>
+					<input type="password" name="newpasswd" checked="0" />
+				</td>
+			</tr>
+		</table>
+
 		<h3 class="homebase" tal:condition="python:systems[0] and len(systems[0]) > 0">
 			Clusters
 		</h3>
--- conga/luci/plone-custom/conga.js	2008/07/14 21:52:30	1.3.2.7
+++ conga/luci/plone-custom/conga.js	2010/01/07 18:08:35	1.3.2.8
@@ -202,8 +202,6 @@
 	if (i.length === 1) {
 		if (iponly) {
 			return ('You must enter an IP address in quad-dot notation.');
-		} else {
-			return ('Hostnames must be fully qualified.');
 		}
 	}
 
--- conga/luci/site/luci/Extensions/FenceHandler.py	2009/04/23 20:38:52	1.4.2.17
+++ conga/luci/site/luci/Extensions/FenceHandler.py	2010/01/07 18:08:35	1.4.2.18
@@ -43,6 +43,7 @@
 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_PARTITION = 'A partition name must be provided for this LPAR Fence'
+FI_PROVIDE_MANAGED = 'A managed system name must be provided for this LPAR Fence'
 
 ILLEGAL_CHARS_REPLACED = 'Illegal characters were replaced by underscores. Feel free to set a new value.'
 
@@ -820,6 +821,68 @@
 
 	return errors
 
+def val_idrac_fd(form, fencedev):
+	errors = list()
+
+	try:
+		ip = form['ipaddr'].strip()
+		if not ip:
+			raise Exception, 'blank'
+		fencedev.addAttribute('ipaddr', ip)
+	except Exception, e:
+		errors.append(FD_PROVIDE_IP)
+
+	try:
+		log = form['login'].strip()
+		if not log:
+			raise Exception, 'blank'
+		fencedev.addAttribute('login', log)
+	except Exception, e:
+		errors.append(FD_PROVIDE_LOGIN)
+
+	has_passwd = False
+	try:
+		pwd = form['passwd'].strip()
+		if not pwd:
+			# 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:
+		try:
+			fencedev.removeAttribute('passwd')
+		except:
+			pass
+
+	try:
+		pwd_script = form['passwd_script'].strip()
+		if not pwd_script:
+			raise Exception, 'blank'
+		fencedev.addAttribute('passwd_script', pwd_script)
+		has_passwd = True
+	except Exception, e:
+		try:
+			fencedev.removeAttribute('passwd_script')
+		except:
+			pass
+
+	if not has_passwd:
+		errors.append(FD_PROVIDE_PASSWD)
+
+	use_ssh = form.has_key('secure') and (form['secure'] == '1' or form['secure'].lower() == 'true')
+	if use_ssh:
+		fencedev.addAttribute('secure', '1')
+	else:
+		try:
+			fencedev.removeAttribute('secure')
+		except:
+			pass
+
+	return errors
+
 def val_rps10_fd(form, fencedev):
 	errors = list()
 
@@ -988,6 +1051,7 @@
 	'fence_ipmilan':		val_ipmilan_fd,
 	'fence_drac':			val_drac_fd,
 	'fence_drac5':			val_drac_fd,
+	'fence_idrac':			val_idrac_fd,
 	'fence_rsa':			val_rsa_fd,
 	'fence_rsb':			val_rsa_fd, # same params as rsa
 	'fence_rps10':			val_rps10_fd,
@@ -1252,6 +1316,14 @@
 	except Exception, e:
 		errors.append(FI_PROVIDE_PARTITION)
 
+	try:
+		managed = form['managed'].strip()
+		if not managed:
+			raise Exception, 'blank'
+		fenceinst.addAttribute('managed', managed)
+	except Exception, e:
+		errors.append(FI_PROVIDE_MANAGED)
+
 	fenceinst.addAttribute('secure', '1')
 
 	return errors
@@ -1304,6 +1376,7 @@
 	'fence_ipmilan':		val_noop_fi,
 	'fence_drac':			val_noop_fi,
 	'fence_drac5':			val_noop_fi,
+	'fence_idrac':			val_noop_fi,
 	'fence_rsa':			val_noop_fi,
 	'fence_rsb':			val_noop_fi,
 	'fence_rps10':			val_noop_fi
--- conga/luci/site/luci/Extensions/LuciValidation.py	2009/05/21 13:32:04	1.6.2.12
+++ conga/luci/site/luci/Extensions/LuciValidation.py	2010/01/07 18:08:35	1.6.2.13
@@ -288,6 +288,37 @@
 				luci_log.debug_verbose('vSA1: error: %r %s: %r' % (e, str(e), form_xml))
 			return (False, { 'errors': [ 'The resource data submitted for this service is not properly formed' ]})
 
+	service_name = fvar['svc_name']
+	if service_name is None:
+		if LUCI_DEBUG_MODE is True:
+			luci_log.debug_verbose('vSA5: no service name')
+		errors.append('No service name was given')
+
+	try:
+		cur_service = model.retrieveServiceByName(service_name)
+	except Exception, e:
+		if LUCI_DEBUG_MODE is True:
+			luci_log.debug_verbose('vSA5c: no service named %s found: %r %s' \
+				% (service_name, e, str(e)))
+		cur_service = None
+
+	action = fvar['action']
+	if action is None:
+		return (False, {'errors': [ 'No action was given for service %s' % service_name ] })
+
+	if action == 'edit':
+		if cur_service is None:
+			return (False, {'errors': [ 'The service %s could not be found for editing' % service_name ]})
+		model.deleteService(service_name)
+	elif action == 'add':
+		if cur_service is not None:
+			return (False, {'errors': [ 'A service with the name %s already exists' % service_name ]})
+	else:
+		if LUCI_DEBUG_MODE is True:
+			luci_log.debug_verbose('vSA4a: unknown action %s' \
+				% request.form['action'])
+		return (False, {'errors': [ 'An unknown action was specified' ]})
+
 	form_hash = {}
 	form_hash['toplevel'] = { 'form': None, 'kids': [] }
 	for i in forms:
@@ -391,13 +422,6 @@
 				errors.append('Restart expire time must be a number greater than or equal to 0')
 				restart_expire_time = None
 
-
-	service_name = fvar['svc_name']
-	if service_name is None:
-		if LUCI_DEBUG_MODE is True:
-			luci_log.debug_verbose('vSA5: no service name')
-		errors.append('No service name was given')
-
 	nfslock = '0'
 	try:
 		if not request.form.has_key('nfslock') or request.form['nfslock'] != '1':
@@ -429,31 +453,6 @@
 	except Exception, e:
 		exclusive = '0'
 
-	try:
-		cur_service = model.retrieveServiceByName(service_name)
-	except Exception, e:
-		if LUCI_DEBUG_MODE is True:
-			luci_log.debug_verbose('vSA5c: no service named %s found: %r %s' \
-				% (service_name, e, str(e)))
-		cur_service = None
-
-	action = fvar['action']
-	if action is None:
-		return (False, {'errors': [ 'No action was given for service %s' % service_name ] })
-
-	if action == 'edit':
-		if cur_service is None:
-			return (False, {'errors': [ 'The service %s could not be found for editing' % service_name ]})
-		model.deleteService(service_name)
-	elif action == 'add':
-		if cur_service is not None:
-			return (False, {'errors': [ 'A service with the name %s already exists' % service_name ]})
-	else:
-		if LUCI_DEBUG_MODE is True:
-			luci_log.debug_verbose('vSA4a: unknown action %s' \
-				% request.form['action'])
-		return (False, {'errors': [ 'An unknown action was specified' ]})
-
 	def buildSvcTree(parent, child_id_list):
 		for i in child_id_list:
 			try:
--- conga/luci/site/luci/Extensions/ResourceHandler.py	2009/05/21 13:32:04	1.1.4.8
+++ conga/luci/site/luci/Extensions/ResourceHandler.py	2010/01/07 18:08:35	1.1.4.9
@@ -675,10 +675,7 @@
 			raise KeyError, 'No volume group name was given for "%s"' % rname
 		res.addAttribute('vg_name', vg_name)
 	except Exception, e:
-		err = str(e)
-		errors.append(err)
-		if LUCI_DEBUG_MODE is True:
-			luci_log.debug_verbose('addLVM5: %s' % err)
+		vg_name = None
 
 	try:
 		lv_name = form['lv_name'].strip()
@@ -686,10 +683,12 @@
 			raise KeyError, 'No logical volume name was given for "%s"' % rname
 		res.addAttribute('lv_name', lv_name)
 	except Exception, e:
-		err = str(e)
-		errors.append(err)
+		lv_name = None
+
+	if not lv_name and not vg_name:
+		errors.append('Neither lv_name nor vg_name given for resource "%s"' % rname)
 		if LUCI_DEBUG_MODE is True:
-			luci_log.debug_verbose('addLVM6: %s' % err)
+			luci_log.debug_verbose('addLVM6: no vg_name or lv_name for "%s"' % rname)
 
 	return errors
 
--- conga/luci/site/luci/Extensions/homebase_adapters.py	2008/04/23 17:27:10	1.34.2.17
+++ conga/luci/site/luci/Extensions/homebase_adapters.py	2010/01/07 18:08:35	1.34.2.18
@@ -139,6 +139,12 @@
 	if passwd != pwconfirm:
 		return (False, { 'errors': [ 'The passwords given do not match' ]})
 
+	if ":" in passwd:
+		return (False, { 'errors': [ 'The passwords cannot contain semicolons' ]})
+
+	if " " in passwd:
+		return (False, { 'errors': [ 'The passwords cannot contain spaces' ]})
+
 	user_props = {
 		'username': user,
 		'password': passwd,
@@ -763,6 +769,18 @@
 	if len(errors) > 0:
 		return (False, { 'errors': errors })
 
+	new_passwd = request.form.get('newpasswd')
+	if new_passwd:
+		new_passwd = new_passwd.strip()
+	if new_passwd:
+		try:
+			user.userSetPassword(user_id, new_passwd)
+			messages.append('Set password for user "%s"' % username)
+		except Exception, e:
+			errors.append('An error occurred while setting the password for user "%s"' % username)
+	if len(errors) > 0:
+		return (False, { 'errors': errors })
+
 	clusters = self.restrictedTraverse('%s/systems/cluster/objectItems' % PLONE_ROOT)('Folder')
 	if not request.form.has_key('__CLUSTER'):
 		for i in clusters:
--- conga/luci/site/luci/Extensions/ClusterModel/FenceDeviceAttr.py	2009/02/18 19:13:30	1.5.2.2
+++ conga/luci/site/luci/Extensions/ClusterModel/FenceDeviceAttr.py	2010/01/07 18:08:35	1.5.2.3
@@ -27,6 +27,7 @@
 	'fence_ilo':			'HP iLO Device',
 	'fence_ipmilan':		'IPMI Lan',
 	'fence_drac':			'Dell DRAC',
+	'fence_idrac':			'Dell iDRAC',
 	'fence_rsa':			'IBM RSA II Device',
 	'fence_rps10':			'RPS10 Serial Switch',
 	'fence_lpar':			'LPAR Fencing',
@@ -52,6 +53,7 @@
 	'fence_ilo':			False,
 	'fence_ipmilan':		False,
 	'fence_drac':			False,
+	'fence_idrac':			False,
 	'fence_rsa':			False,
 	'fence_rps10':			False,
 	'fence_manual':			False
@@ -95,6 +97,7 @@
 	'fence_ilo':			( ),
 	'fence_ipmilan':		( ),
 	'fence_drac':			( ),
+	'fence_idrac':			( ),
 	'fence_rsa':			( ),
 	'fence_rps10':			( ),
 	'fence_manual':			( )
@@ -135,6 +138,8 @@
 		( 'name', 'ipaddr', 'login', 'passwd', 'lanplus', 'auth' ),
 	'fence_drac':
 		( 'name', 'ipaddr', 'login', 'passwd' ),
+	'fence_idrac':
+		( 'name', 'ipaddr', 'login', 'passwd' ),
 	'fence_rsa':
 		( 'name', 'hostname', 'login', 'passwd' ),
 	'fence_rps10':
--- conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py	2009/01/23 19:33:29	1.1.4.12
+++ conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py	2010/01/07 18:08:35	1.1.4.13
@@ -1008,7 +1008,6 @@
     self.mcast_address = mcast_addr
     self.mcast_interface = mcast_if
     self.usesMulticast = True
-    self.set_nodes_multicast(mcast_addr, mcast_if=mcast_if)
     self.isModified = True
 
   def del_nodes_multicast(self):
--- conga/luci/test/CGA_0160_Add_User.py	2007/03/01 00:31:19	1.7.2.1
+++ conga/luci/test/CGA_0160_Add_User.py	2010/01/07 18:08:36	1.7.2.2
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#!/usr/bin/python
 
 # Copyright Red Hat, Inc. 2006
 #
--- conga/luci/test/CGA_0170_Online_Documentation_Portlet.py	2007/03/01 00:31:19	1.1.4.1
+++ conga/luci/test/CGA_0170_Online_Documentation_Portlet.py	2010/01/07 18:08:36	1.1.4.2
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#!/usr/bin/python
 
 # Copyright Red Hat, Inc. 2006
 #
--- conga/luci/test/CGA_0200_Create_cluster.py	2007/06/18 18:39:49	1.4.2.2
+++ conga/luci/test/CGA_0200_Create_cluster.py	2010/01/07 18:08:36	1.4.2.3
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#!/usr/bin/python
 
 # Copyright Red Hat, Inc. 2006
 #
--- conga/luci/test/cleaner.py	2008/01/23 04:44:56	1.1.4.3
+++ conga/luci/test/cleaner.py	2010/01/07 18:08:36	1.1.4.4
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#!/usr/bin/python
 
 #  Copyright (C) Red Hat, Inc. 2007-2008
 #
--- conga/luci/test/congaDemoTests.py	2007/06/25 16:17:27	1.11.2.2
+++ conga/luci/test/congaDemoTests.py	2010/01/07 18:08:36	1.11.2.3
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#!/usr/bin/python
 
 # Copyright Red Hat, Inc. 2006
 #
--- conga/luci/test/conga_Helpers.py	2008/01/23 04:44:57	1.14.2.3
+++ conga/luci/test/conga_Helpers.py	2010/01/07 18:08:36	1.14.2.4
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#!/usr/bin/python
 
 #  Copyright (C) Red Hat, Inc. 2006-2008
 #
--- conga/luci/test/conga_suite.py	2007/06/25 16:17:27	1.11.2.2
+++ conga/luci/test/conga_suite.py	2010/01/07 18:08:36	1.11.2.3
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#!/usr/bin/python
 
 # Copyright Red Hat, Inc. 2006
 #
--- conga/luci/test/loggerObject.py	2007/03/01 00:31:19	1.2.4.1
+++ conga/luci/test/loggerObject.py	2010/01/07 18:08:36	1.2.4.2
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#!/usr/bin/python
 
 # Copyright Red Hat, Inc. 2006
 #
--- conga/luci/utils/luci_admin	2008/04/11 06:50:33	1.50.2.7
+++ conga/luci/utils/luci_admin	2010/01/07 18:08:36	1.50.2.8
@@ -181,6 +181,10 @@
 			err.write('Spaces are not allowed in passwords\n')
 			continue
 
+		elif ':' in s1:
+			err.write('Semicolons are not allowed in passwords\n')
+			continue
+
 		s2 = getpass(confirm_prompt)
 		if s1 != s2:
 			err.write('Password mismatch, try again\n')
@@ -1022,7 +1026,7 @@
 	try:
 		(pid, status) = os.waitpid(childpid, 0)
 	except OSError, (errno, msg):
-		err.write('%s waitpid: %s\n' % (__name__,  msg))
+		err.write('%s waitpid: %s\n' % (__name__, msg))
 
 	if os.WIFEXITED(status):
 		status = os.WEXITSTATUS(status)
--- conga/ricci/modules/cluster/Clusvcadm.cpp	2008/01/17 17:38:37	1.7.2.7
+++ conga/ricci/modules/cluster/Clusvcadm.cpp	2010/01/07 18:08:36	1.7.2.8
@@ -101,6 +101,8 @@
 			continue;
 		String flag;
 
+		if (iter->status == ServiceStatus::RG_STATE_RECOVER)
+			throw String(servicename + " is in the process of being recovered");
 		if (iter->status == ServiceStatus::RG_STATE_MIGRATE)
 			throw String(servicename + " is in the process of being migrated");
 
@@ -199,6 +201,8 @@
 			continue;
 
 		String flag;
+		if (iter->status == ServiceStatus::RG_STATE_RECOVER)
+			throw String(servicename + " is in the process of being recovered");
 		if (iter->status == ServiceStatus::RG_STATE_MIGRATE)
 			throw String(servicename +
 					" is already in the process of being migrated");
@@ -273,6 +277,7 @@
 
 		if (iter->status == ServiceStatus::RG_STATE_STARTING ||
 			iter->status == ServiceStatus::RG_STATE_FAILED ||
+			iter->status == ServiceStatus::RG_STATE_RECOVER ||
 			iter->status == ServiceStatus::RG_STATE_STARTED)
 		{
 			String out, err;
--- conga/ricci/ricci/Ricci.cpp	2008/01/17 17:38:39	1.18.2.6
+++ conga/ricci/ricci/Ricci.cpp	2010/01/07 18:08:37	1.18.2.7
@@ -483,6 +483,7 @@
 		int status;
 		vector<String> args;
 
+		args.push_back("--readonly");
 		args.push_back("nodeinfo");
 		if (utils::execute("/usr/bin/virsh", args, out, err, status, false))
 			throw command_not_found_error_msg("/usr/bin/virsh");


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]