From: rmccabe@sourceware.org <rmccabe@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] conga luci/cluster/fence-macros luci/cluster/v ...
Date: 7 Jan 2010 18:08:41 -0000 [thread overview]
Message-ID: <20100107180841.5181.qmail@sourceware.org> (raw)
CVSROOT: /cvs/cluster
Module name: conga
Branch: RHEL5
Changes by: rmccabe at 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");
next reply other threads:[~2010-01-07 18:08 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-07 18:08 rmccabe [this message]
-- strict thread matches above, loose matches on Subject: below --
2010-08-05 17:33 [Cluster-devel] conga luci/cluster/fence-macros luci/cluster/v rmccabe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100107180841.5181.qmail@sourceware.org \
--to=rmccabe@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).