[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