[Erp5-report] r44207 luke - /erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Mar 11 17:55:19 CET 2011
Author: luke
Date: Fri Mar 11 17:55:18 2011
New Revision: 44207
URL: http://svn.erp5.org?rev=44207&view=rev
Log:
- implement upgrade of mysql
- change how arguments are passed to be explicit and give responsilibty
to runner
- provide more useful messages
Modified:
erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/__init__.py
erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/mysql.py
Modified: erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/__init__.py
URL: http://svn.erp5.org/erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/__init__.py?rev=44207&r1=44206&r2=44207&view=diff
==============================================================================
--- erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/__init__.py [utf8] (original)
+++ erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/__init__.py [utf8] Fri Mar 11 17:55:18 2011
@@ -522,16 +522,16 @@ SSLRandomSeed connect builtin
self.substituteTemplate(self.getTemplateFilename('my.cnf.in'),
mysql_conf))
- mysql_command_list = [self.options['mysql_binary'].strip(),
- '--no-defaults', '-B', '--user=root',
- '--socket=%s' % mysql_conf['socket'],
- ]
mysql_script = pkg_resources.resource_string(__name__,
'template/initmysql.sql.in') % mysql_conf
self.path_list.extend(zc.buildout.easy_install.scripts([('mysql_update',
__name__ + '.mysql', 'updateMysql')], self.ws,
- sys.executable, self.wrapper_directory, arguments=[mysql_command_list,
- mysql_script]))
+ sys.executable, self.wrapper_directory, arguments=[dict(
+ mysql_script=mysql_script,
+ mysql_binary=self.options['mysql_binary'].strip(),
+ mysql_upgrade_binary=self.options['mysql_upgrade_binary'].strip(),
+ socket=mysql_conf['socket'],
+ )]))
self.path_list.extend(zc.buildout.easy_install.scripts([('mysqld',
__name__ + '.mysql', 'runMysql')], self.ws,
sys.executable, self.wrapper_directory, arguments=[dict(
Modified: erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/mysql.py
URL: http://svn.erp5.org/erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/mysql.py?rev=44207&r1=44206&r2=44207&view=diff
==============================================================================
--- erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/mysql.py [utf8] (original)
+++ erp5/trunk/utils/slapos.recipe.erp5/src/slapos/recipe/erp5/mysql.py [utf8] Fri Mar 11 17:55:18 2011
@@ -1,6 +1,5 @@
import os
import subprocess
-import sys
import time
@@ -33,21 +32,34 @@ def runMysql(args):
def updateMysql(args):
- mysql_command_list = args[0]
- mysql_script = args[1]
+ conf = args[0]
sleep = 30
is_succeed = False
while True:
if not is_succeed:
- mysql = subprocess.Popen(mysql_command_list, stdin=subprocess.PIPE,
- stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
- result = mysql.communicate(mysql_script)[0]
- if mysql.returncode is None:
- mysql.kill()
- if mysql.returncode != 0:
- print 'Script failed with: %s' % result
+ mysql_upgrade_list = [conf['mysql_upgrade_binary'], '--no-defaults', '--user=root', '--socket=%s' % conf['socket']]
+ mysql_upgrade = subprocess.Popen(mysql_upgrade_list, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ result = mysql_upgrade.communicate()[0]
+ if mysql_upgrade.returncode is None:
+ mysql_upgrade.kill()
+ if mysql_upgrade.returncode != 0 and not 'is already upgraded' in result:
+ print "Command %r failed with result:\n%s" % (mysql_upgrade_list, result)
print 'Sleeping for %ss and retrying' % sleep
else:
- is_succeed = True
- print 'Script succesfully run on database, exiting'
+ if mysql_upgrade.returncode == 0:
+ print "MySQL database upgraded with result:\n%s" % result
+ else:
+ print "No need to upgrade MySQL database"
+ mysql_list = [conf['mysql_binary'].strip(), '--no-defaults', '-B', '--user=root', '--socket=%s' % conf['socket']]
+ mysql = subprocess.Popen(mysql_list, stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ result = mysql.communicate(conf['mysql_script'])[0]
+ if mysql.returncode is None:
+ mysql.kill()
+ if mysql.returncode != 0:
+ print 'Command %r failed with:\n%s' % (mysql_list, result)
+ print 'Sleeping for %ss and retrying' % sleep
+ else:
+ is_succeed = True
+ print 'SlapOS initialisation script succesfully applied on database.'
time.sleep(sleep)
More information about the Erp5-report
mailing list