Merge "Disable REST API to avoid clash"

This commit is contained in:
Zuul 2021-01-20 13:48:31 +00:00 committed by Gerrit Code Review
commit a2852782f0
2 changed files with 26 additions and 2 deletions

View File

@ -381,6 +381,10 @@ class MySQLRouterCharm(charms_openstack.charm.OpenStackCharm):
"--conf-use-sockets",
"--conf-bind-address", self.shared_db_address,
"--conf-base-port", str(self.mysqlrouter_port)]
# Avoid multiple routers trying to bind to the same api port
# Bug #1911907
if ch_core.host.cmp_pkgrevno('mysql-router', '8.0.22') >= 0:
cmd.append("--disable-rest")
try:
output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
ch_core.hookenv.log(output, "DEBUG")

View File

@ -74,6 +74,7 @@ class TestMySQLRouterCharm(test_utils.PatchHelper):
self.patch_object(mysql_router.ch_core.host, "user_exists")
self.patch_object(mysql_router.ch_core.host, "group_exists")
self.patch_object(mysql_router.ch_core.host, "mkdir")
self.patch_object(mysql_router.ch_core.host, "cmp_pkgrevno")
self.stdout = mock.MagicMock()
self.subprocess.STDOUT = self.stdout
@ -379,18 +380,37 @@ class TestMySQLRouterCharm(test_utils.PatchHelper):
mrc.options.system_user = _user
mrc.options.base_port = _port
# Successful
# Successful < 8.0.22
self.cmp_pkgrevno.return_value = -1
mrc.bootstrap_mysqlrouter()
self.subprocess.check_output.assert_called_once_with(
[mrc.mysqlrouter_bin, "--user", _user, "--bootstrap",
"{}:{}@{}".format(mrc.db_router_user, _pass, _addr),
"--directory", mrc.mysqlrouter_working_dir, "--conf-use-sockets",
"--directory", mrc.mysqlrouter_working_dir,
"--conf-use-sockets",
"--conf-bind-address", mrc.shared_db_address,
"--conf-base-port", _port],
stderr=self.stdout)
self.set_flag.assert_called_once_with(
mysql_router.MYSQL_ROUTER_BOOTSTRAPPED)
# Successful >= 8.0.22
self.subprocess.reset_mock()
self.set_flag.reset_mock()
self.cmp_pkgrevno.return_value = 1
mrc.bootstrap_mysqlrouter()
self.subprocess.check_output.assert_called_once_with(
[mrc.mysqlrouter_bin, "--user", _user, "--bootstrap",
"{}:{}@{}".format(mrc.db_router_user, _pass, _addr),
"--directory", mrc.mysqlrouter_working_dir,
"--conf-use-sockets",
"--conf-bind-address", mrc.shared_db_address,
"--conf-base-port", _port,
"--disable-rest"],
stderr=self.stdout)
self.set_flag.assert_called_once_with(
mysql_router.MYSQL_ROUTER_BOOTSTRAPPED)
# Fail
self.subprocess.reset_mock()
self.set_flag.reset_mock()