mirror of
https://github.com/ceph/ceph
synced 2026-08-02 07:03:18 +00:00
Merge pull request #69574 from rhcs-dashboard/dash-binding
mgr/dashboard: fix bind address regression from CherryPy isolation Reviewed-by: Nizamudeen A <nia@redhat.com>
This commit is contained in:
commit
c47da65d66
@ -209,6 +209,7 @@ class CherryPyConfig(object):
|
||||
self._url_prefix = prepare_url_prefix(self.get_module_option( # type: ignore
|
||||
'url_prefix', default=''))
|
||||
|
||||
bind_addr = server_addr
|
||||
if server_addr in ['::', '0.0.0.0']:
|
||||
server_addr = self.get_mgr_ip() # type: ignore
|
||||
base_url = build_url(
|
||||
@ -217,7 +218,7 @@ class CherryPyConfig(object):
|
||||
port=server_port,
|
||||
)
|
||||
uri = f'{base_url}{self.url_prefix}/'
|
||||
return uri, (server_addr, server_port), ssl_info, config
|
||||
return uri, (bind_addr, server_port), ssl_info, config
|
||||
|
||||
def await_configuration(self):
|
||||
"""
|
||||
|
||||
@ -2,11 +2,13 @@
|
||||
|
||||
import errno
|
||||
import unittest
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
from mgr_module import ERROR_MSG_EMPTY_INPUT_FILE
|
||||
|
||||
from .. import settings
|
||||
from ..controllers.settings import Settings as SettingsController
|
||||
from ..module import CherryPyConfig
|
||||
from ..settings import Settings, handle_option_command
|
||||
from ..tests import ControllerTestCase, KVStoreMockMixin
|
||||
|
||||
@ -125,6 +127,33 @@ class SettingsTest(unittest.TestCase, KVStoreMockMixin):
|
||||
self.assertEqual(str(ctx.exception),
|
||||
"type object 'Options' has no attribute 'NON_EXISTENT_OPTION'")
|
||||
|
||||
def _setup_cherrypy_config(self, server_addr, server_port):
|
||||
obj = CherryPyConfig()
|
||||
config_map = {
|
||||
'server_addr': server_addr,
|
||||
'ssl': False,
|
||||
'server_port': server_port
|
||||
}
|
||||
obj.get_localized_module_option = MagicMock(
|
||||
side_effect=lambda key, default=None: config_map.get(key, default))
|
||||
obj.get_mgr_ip = MagicMock(return_value='192.168.1.10')
|
||||
obj.get_module_option = MagicMock(return_value='')
|
||||
obj.get_mgr_id = MagicMock(return_value='test')
|
||||
obj.module_name = 'dashboard'
|
||||
obj.log = MagicMock()
|
||||
obj.update_cherrypy_config = MagicMock()
|
||||
return obj
|
||||
|
||||
def test_wildcard_bind_addr_preserved(self):
|
||||
obj = self._setup_cherrypy_config('::', 8080)
|
||||
_, bind_addr, _, _ = obj._configure() # pylint: disable=protected-access
|
||||
self.assertEqual(bind_addr, ('::', 8080))
|
||||
|
||||
def test_wildcard_bind_addr_preserved_ipv4(self):
|
||||
obj = self._setup_cherrypy_config('0.0.0.0', 8443)
|
||||
_, bind_addr, _, _ = obj._configure() # pylint: disable=protected-access
|
||||
self.assertEqual(bind_addr, ('0.0.0.0', 8443))
|
||||
|
||||
|
||||
class SettingsControllerTest(ControllerTestCase, KVStoreMockMixin):
|
||||
@classmethod
|
||||
|
||||
Loading…
Reference in New Issue
Block a user