diff --git a/runbot/res_config.py b/runbot/res_config.py index 52703bf0..7d8d2469 100644 --- a/runbot/res_config.py +++ b/runbot/res_config.py @@ -30,6 +30,9 @@ class runbot_config_settings(osv.osv_memory): 'default_timeout': fields.integer('Default Timeout (in seconds)'), 'default_starting_port': fields.integer('Starting Port for Running Builds'), 'default_domain': fields.char('Runbot Domain'), + 'default_db_user': fields.char('Database User'), + 'default_db_host': fields.char('Database Host'), + 'default_db_port': fields.char('Database Port'), } def get_default_parameters(self, cr, uid, fields, context=None): @@ -39,12 +42,18 @@ def get_default_parameters(self, cr, uid, fields, context=None): timeout = icp.get_param(cr, uid, 'runbot.timeout', default=1800) starting_port = icp.get_param(cr, uid, 'runbot.starting_port', default=2000) runbot_domain = icp.get_param(cr, uid, 'runbot.domain', default='runbot.odoo.com') + db_user = icp.get_param(cr, uid, 'runbot.db_user') + db_host = icp.get_param(cr, uid, 'runbot.db_host') + db_port = icp.get_param(cr, uid, 'runbot.db_port') return { 'default_workers': int(workers), 'default_running_max': int(running_max), 'default_timeout': int(timeout), 'default_starting_port': int(starting_port), 'default_domain': runbot_domain, + 'default_db_user': db_user, + 'default_db_host': db_host, + 'default_db_port': db_port, } def set_default_parameters(self, cr, uid, ids, context=None): @@ -55,6 +64,9 @@ def set_default_parameters(self, cr, uid, ids, context=None): icp.set_param(cr, uid, 'runbot.timeout', config.default_timeout) icp.set_param(cr, uid, 'runbot.starting_port', config.default_starting_port) icp.set_param(cr, uid, 'runbot.domain', config.default_domain) + icp.set_param(cr, uid, 'runbot.db_user', config.default_db_user) + icp.set_param(cr, uid, 'runbot.db_host', config.default_db_host) + icp.set_param(cr, uid, 'runbot.db_port', config.default_db_port) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/runbot/res_config_view.xml b/runbot/res_config_view.xml index 1f863499..f4c8601c 100644 --- a/runbot/res_config_view.xml +++ b/runbot/res_config_view.xml @@ -38,6 +38,23 @@ + + diff --git a/runbot/runbot.py b/runbot/runbot.py index 82d2669c..3a4f8492 100644 --- a/runbot/runbot.py +++ b/runbot/runbot.py @@ -742,7 +742,10 @@ def checkout(self, cr, uid, ids, context=None): build.write({'modules': ','.join(modules_to_test)}) def pg_dropdb(self, cr, uid, dbname): - run(['dropdb', dbname]) + cmd = ['dropdb', dbname] + cmd = self.pg_set_env(cr, uid, cmd) + + run(cmd) # cleanup filestore datadir = appdirs.user_data_dir() paths = [os.path.join(datadir, pn, 'filestore', dbname) for pn in 'OpenERP Odoo'.split()] @@ -751,7 +754,30 @@ def pg_dropdb(self, cr, uid, dbname): def pg_createdb(self, cr, uid, dbname): self.pg_dropdb(cr, uid, dbname) _logger.debug("createdb %s", dbname) - run(['createdb', '--encoding=unicode', '--lc-collate=C', '--template=template0', dbname]) + cmd = ['createdb', '--encoding=unicode', '--lc-collate=C', '--template=template0', dbname] + cmd = self.pg_set_env(cr, uid, cmd) + + run(cmd) + + def pg_set_env(self, cr, uid, cmd): + """ + Set the user, the host and the port to use runbot in a multi users environment + :param cmd: A list of commands to execute + :return: A list of commands to execute with database settings + """ + icp = self.pool['ir.config_parameter'] + db_user = icp.get_param(cr, uid, 'runbot.db_user') + db_host = icp.get_param(cr, uid, 'runbot.db_host') + db_port = icp.get_param(cr, uid, 'runbot.db_port') + + if db_user: + cmd.append('--username=%s' % db_user) + if db_host: + cmd.append('--host=%s' % db_host) + if db_port: + cmd.append('--port=%s' % db_port) + + return cmd def cmd(self, cr, uid, ids, context=None): """Return a list describing the command to start the build"""