os.environ['PGPASSWORD'] = ''
def exp_dump(self, db_name):
- self._set_pg_psw_env_var()
-
- cmd = ['pg_dump', '--format=c', '--no-owner']
- if tools.config['db_user']:
- cmd.append('--username=' + tools.config['db_user'])
- if tools.config['db_host']:
- cmd.append('--host=' + tools.config['db_host'])
- if tools.config['db_port']:
- cmd.append('--port=' + str(tools.config['db_port']))
- cmd.append(db_name)
-
- stdin, stdout = tools.exec_pg_command_pipe(*tuple(cmd))
- stdin.close()
- data = stdout.read()
- res = stdout.close()
- if res:
- _logger.error('DUMP DB: %s failed\n%s', db_name, data)
- raise Exception, "Couldn't dump database"
- _logger.info('DUMP DB: %s', db_name)
-
- self._unset_pg_psw_env_var()
-
- return base64.encodestring(data)
- logger = netsvc.Logger()
+ try:
+ self._set_pg_psw_env_var()
+ cmd = ['pg_dump', '--format=c', '--no-owner']
+ if tools.config['db_user']:
+ cmd.append('--username=' + tools.config['db_user'])
+ if tools.config['db_host']:
+ cmd.append('--host=' + tools.config['db_host'])
+ if tools.config['db_port']:
+ cmd.append('--port=' + str(tools.config['db_port']))
+ cmd.append(db_name)
+
+ stdin, stdout = tools.exec_pg_command_pipe(*tuple(cmd))
+ stdin.close()
+ data = stdout.read()
+ res = stdout.close()
+
+ if not data or res:
- logger.notifyChannel("web-services", netsvc.LOG_ERROR,
++ _logger.error(
+ 'DUMP DB: %s failed! Please verify the configuration of the database password on the server. '\
+ 'It should be provided as a -w <PASSWD> command-line option, or as `db_password` in the '\
+ 'server configuration file.\n %s' % (db_name, data))
+ raise Exception, "Couldn't dump database"
- logger.notifyChannel("web-services", netsvc.LOG_INFO,
- 'DUMP DB successful: %s' % (db_name))
++ _logger.info('DUMP DB successful: %s', db_name)
+
+ return base64.encodestring(data)
+ finally:
+ self._unset_pg_psw_env_var()
def exp_restore(self, db_name, data):
- self._set_pg_psw_env_var()
-
- if self.exp_db_exist(db_name):
- _logger.warning('RESTORE DB: %s already exists', db_name)
- raise Exception, "Database already exists"
-
- self._create_empty_database(db_name)
-
- cmd = ['pg_restore', '--no-owner']
- if tools.config['db_user']:
- cmd.append('--username=' + tools.config['db_user'])
- if tools.config['db_host']:
- cmd.append('--host=' + tools.config['db_host'])
- if tools.config['db_port']:
- cmd.append('--port=' + str(tools.config['db_port']))
- cmd.append('--dbname=' + db_name)
- args2 = tuple(cmd)
-
- buf=base64.decodestring(data)
- if os.name == "nt":
- tmpfile = (os.environ['TMP'] or 'C:\\') + os.tmpnam()
- file(tmpfile, 'wb').write(buf)
- args2=list(args2)
- args2.append(' ' + tmpfile)
- args2=tuple(args2)
- stdin, stdout = tools.exec_pg_command_pipe(*args2)
- if not os.name == "nt":
- stdin.write(base64.decodestring(data))
- stdin.close()
- res = stdout.close()
- if res:
- raise Exception, "Couldn't restore database"
- _logger.info('RESTORE DB: %s', db_name)
-
- self._unset_pg_psw_env_var()
-
- return True
- logger = netsvc.Logger()
-
+ try:
+ self._set_pg_psw_env_var()
+
+ if self.exp_db_exist(db_name):
- logger.notifyChannel("web-services", netsvc.LOG_WARNING,
- 'RESTORE DB: %s already exists' % (db_name,))
++ _logger.warning('RESTORE DB: %s already exists' % (db_name,))
+ raise Exception, "Database already exists"
+
+ self._create_empty_database(db_name)
+
+ cmd = ['pg_restore', '--no-owner']
+ if tools.config['db_user']:
+ cmd.append('--username=' + tools.config['db_user'])
+ if tools.config['db_host']:
+ cmd.append('--host=' + tools.config['db_host'])
+ if tools.config['db_port']:
+ cmd.append('--port=' + str(tools.config['db_port']))
+ cmd.append('--dbname=' + db_name)
+ args2 = tuple(cmd)
+
+ buf=base64.decodestring(data)
+ if os.name == "nt":
+ tmpfile = (os.environ['TMP'] or 'C:\\') + os.tmpnam()
+ file(tmpfile, 'wb').write(buf)
+ args2=list(args2)
+ args2.append(' ' + tmpfile)
+ args2=tuple(args2)
+ stdin, stdout = tools.exec_pg_command_pipe(*args2)
+ if not os.name == "nt":
+ stdin.write(base64.decodestring(data))
+ stdin.close()
+ res = stdout.close()
+ if res:
+ raise Exception, "Couldn't restore database"
- logger.notifyChannel("web-services", netsvc.LOG_INFO,
- 'RESTORE DB: %s' % (db_name))
++ _logger.info('RESTORE DB: %s' % (db_name))
+
+ return True
+ finally:
+ self._unset_pg_psw_env_var()
def exp_rename(self, old_name, new_name):
openerp.modules.registry.RegistryManager.delete(old_name)