Пример #1
0
    def exp_dump(self, db_name):
        logger = logging.getLogger('openerp.service.web_services.db.dump')
        with self._set_pg_password_in_environment():
            cmd = ['pg_dump', '--format=c', '--no-owner']
            if tools.config['db_user']:
                cmd.append('--username='******'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.error(
                    'DUMP DB: %s failed! Please verify the configuration of the database password on the server. '
                    'You may need to create a .pgpass file for authentication, or specify `db_password` in the '
                    'server configuration file.\n %s', db_name, data)
                raise Exception, "Couldn't dump database"
            logger.info('DUMP DB successful: %s', db_name)

            return base64.encodestring(data)
Пример #2
0
 def exp_dump(self, db_name):
     logger = logging.getLogger('openerp.service.web_services.db.dump')
     with self._set_pg_password_in_environment():
         cmd = ['pg_dump', '--format=c', '--no-owner']
         if tools.config['db_user']:
             cmd.append('--username='******'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.error(
                     'DUMP DB: %s failed! Please verify the configuration of the database password on the server. '
                     'You may need to create a .pgpass file for authentication, or specify `db_password` in the '
                     'server configuration file.\n %s', db_name, data)
             raise Exception, "Couldn't dump database"
         logger.info('DUMP DB successful: %s', db_name)
 
         return base64.encodestring(data)
Пример #3
0
 def exp_dump(self, db_name):
     try:
         self._set_pg_psw_env_var()
         cmd = ['pg_dump', '--format=c', '--no-owner']
         if tools.config['db_user']:
             cmd.append('--username='******'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.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.info('DUMP DB successful: %s', db_name)
 
         return base64.encodestring(data)
     finally:
         self._unset_pg_psw_env_var()
Пример #4
0
    def _db_pg_dump(self, cr, uid, db_name, db_filename, context=None):
        _logger.info('auto_backup DUMP DB!')
        pg_passwd = os.environ.get(
            'PGPASSWORD') or tools.config['db_password'] or False
        data = ''
        if not pg_passwd:
            _logger.error(
                'DUMP DB: %s failed! Please verify the configuration of the database password on the server. '
                'You may need to create a .pgpass file for authentication, or specify `db_password` in the '
                'server configuration file.\n %s', db_name, data)
            raise Exception, "Couldn't dump database"
        os.environ['PGPASSWORD'] = tools.config['db_password']
        cmd = ['pg_dump', '--format=c', '--no-owner']
        if tools.config['db_user']:
            cmd.append('--username='******'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('--file=' + db_filename)
        cmd.append(db_name)

        stdin, stdout = tools.exec_pg_command_pipe(*tuple(cmd))
        stdin.close()
        data = stdout.read()
        res = stdout.close()

        return base64.encodestring(data)
Пример #5
0
    def exp_dump(self, db_name):
        logger = logging.getLogger("openerp.service.web_services.db.dump")
        with self._set_pg_password_in_environment():
            cmd = ["pg_dump", "--format=c", "--no-owner"]
            if tools.config["db_user"]:
                cmd.append("--username="******"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.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.info("DUMP DB successful: %s", db_name)

            return base64.encodestring(data)
Пример #6
0
    def exp_dump(self, db_name):
        logger = netsvc.Logger()

        self._set_pg_psw_env_var()

        cmd = ['pg_dump', '--format=c', '--no-owner']
        if tools.config['db_user']:
            cmd.append('--username='******'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.notifyChannel("web-services", netsvc.LOG_ERROR,
                    'DUMP DB: %s failed\n%s' % (db_name, data))
            raise Exception, "Couldn't dump database"
        logger.notifyChannel("web-services", netsvc.LOG_INFO,
                'DUMP DB: %s' % (db_name))

        self._unset_pg_psw_env_var()

        return base64.encodestring(data)
Пример #7
0
    def _db_pg_dump(self, cr, uid, db_name, db_filename, context=None):
        _logger.info('auto_backup DUMP DB!')
        pg_passwd = os.environ.get('PGPASSWORD') or tools.config['db_password'] or False
        data = ''
        if not pg_passwd:
            _logger.error(
                    'DUMP DB: %s failed! Please verify the configuration of the database password on the server. '
                    'You may need to create a .pgpass file for authentication, or specify `db_password` in the '
                    'server configuration file.\n %s', db_name, data)
            raise Exception, "Couldn't dump database"
        os.environ['PGPASSWORD'] = tools.config['db_password']
        cmd = ['pg_dump', '--format=c', '--no-owner']
        if tools.config['db_user']:
            cmd.append('--username='******'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('--file=' + db_filename)
        cmd.append(db_name)

        stdin, stdout = tools.exec_pg_command_pipe(*tuple(cmd))
        stdin.close()
        data = stdout.read()
        res = stdout.close()

        return base64.encodestring(data)
Пример #8
0
    def exp_restore(self, db_name, data):
        logger = netsvc.Logger()

        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,))
            raise Exception, "Database already exists"

        self._create_empty_database(db_name)

        cmd = ['pg_restore', '--no-owner']
        if tools.config['db_user']:
            cmd.append('--username='******'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))

        self._unset_pg_psw_env_var()

        return True
Пример #9
0
    def exp_restore(self, db_name, data):
        try:
            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='******'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))

            return True
        finally:
            self._unset_pg_psw_env_var()
Пример #10
0
    def exp_restore(self, db_name, data):
        logger = logging.getLogger('openerp.service.web_services.db.restore')
        with self._set_pg_password_in_environment():
            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='******'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)

            return True