diff --git a/runbot/models/build.py b/runbot/models/build.py
index 64abf0f0..b05e9256 100644
--- a/runbot/models/build.py
+++ b/runbot/models/build.py
@@ -679,9 +679,10 @@ class runbot_build(models.Model):
if grep(build._server("tools/config.py"), "no-netrpc"):
cmd.append("--no-netrpc")
if grep(build._server("tools/config.py"), "log-db"):
+ logdb_uri = self.env['ir.config_parameter'].get_param('runbot.runbot_logdb_uri')
logdb = self.env.cr.dbname
- if config['db_host'] and grep(build._server('sql_db.py'), 'allow_uri'):
- logdb = 'postgres://{cfg[db_user]}:{cfg[db_password]}@{cfg[db_host]}/{db}'.format(cfg=config, db=self.env.cr.dbname)
+ if logdb_uri and grep(build._server('sql_db.py'), 'allow_uri'):
+ logdb = '%s' % logdb_uri
cmd += ["--log-db=%s" % logdb]
if grep(build._server('tools/config.py'), 'log-db-level'):
cmd += ["--log-db-level", '25']
diff --git a/runbot/models/res_config_settings.py b/runbot/models/res_config_settings.py
index 6f47624c..b1ef50a2 100644
--- a/runbot/models/res_config_settings.py
+++ b/runbot/models/res_config_settings.py
@@ -13,6 +13,7 @@ class ResConfigSettings(models.TransientModel):
runbot_starting_port = fields.Integer('Starting port for running builds')
runbot_domain = fields.Char('Runbot domain')
runbot_max_age = fields.Integer('Max branch age (in days)')
+ runbot_logdb_uri = fields.Char('Runbot URI for build logs')
@api.model
def get_values(self):
@@ -23,7 +24,9 @@ class ResConfigSettings(models.TransientModel):
runbot_timeout=int(get_param('runbot.runbot_timeout', default=1800)),
runbot_starting_port=int(get_param('runbot.runbot_starting_port', default=2000)),
runbot_domain=get_param('runbot.runbot_domain', default=common.fqdn()),
- runbot_max_age=int(get_param('runbot.runbot_max_age', default=30)))
+ runbot_max_age=int(get_param('runbot.runbot_max_age', default=30)),
+ runbot_logdb_uri=get_param('runbot.runbot_logdb_uri', default=False),
+ )
return res
@api.multi
@@ -36,3 +39,4 @@ class ResConfigSettings(models.TransientModel):
set_param("runbot.runbot_starting_port", self.runbot_starting_port)
set_param("runbot.runbot_domain", self.runbot_domain)
set_param("runbot.runbot_max_age", self.runbot_max_age)
+ set_param("runbot.runbot_logdb_uri", self.runbot_logdb_uri)
diff --git a/runbot/tests/test_build.py b/runbot/tests/test_build.py
index 2a12f221..b13f9bea 100644
--- a/runbot/tests/test_build.py
+++ b/runbot/tests/test_build.py
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from unittest.mock import patch
+from odoo.tools.config import configmanager
from odoo.tests import common
class Test_Build(common.TransactionCase):
@@ -43,6 +44,20 @@ class Test_Build(common.TransactionCase):
build._get_domain()
self.assertEqual(build.domain, 'runbot99.example.org:1234')
+ @patch('odoo.addons.runbot.models.build.os.mkdir')
+ @patch('odoo.addons.runbot.models.build.grep')
+ def test_build_cmd_log_db(self, mock_grep, mock_mkdir):
+ """ test that the logdb connection URI is taken from the .odoorc file """
+ uri = 'postgres://someone:pass@somewhere.com/db'
+ self.env['ir.config_parameter'].sudo().set_param("runbot.runbot_logdb_uri", uri)
+ build = self.Build.create({
+ 'branch_id': self.branch.id,
+ 'name': 'd0d0caca0000ffffffffffffffffffffffffffff',
+ 'port': '1234',
+ })
+ cmd = build._cmd()[0]
+ self.assertIn('--log-db=%s' % uri, cmd)
+
def test_pr_is_duplicate(self):
""" test PR is a duplicate of a dev branch build """
dup_repo = self.Repo.create({
diff --git a/runbot/views/res_config_settings_views.xml b/runbot/views/res_config_settings_views.xml
index 728947da..3076e01b 100644
--- a/runbot/views/res_config_settings_views.xml
+++ b/runbot/views/res_config_settings_views.xml
@@ -42,6 +42,10 @@