Skip to content

Commit 5b731be

Browse files
committed
mgr/dashboard: introduce cli commands to set cors urls
The benefit is that this will take care of cherrypy reconfiguration Fixes: https://tracker.ceph.com/issues/65104 Signed-off-by: Nizamudeen A <[email protected]>
1 parent 90760c8 commit 5b731be

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

src/pybind/mgr/dashboard/module.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,40 @@ def unset_login_banner(self):
456456
mgr.set_store('custom_login_banner', None)
457457
return HandleCommandResult(stdout='Login banner removed')
458458

459+
# allow cors by setting cross_origin_url
460+
# the value is a comma separated list of URLs
461+
@CLIWriteCommand("dashboard set-cross-origin-url")
462+
def set_cross_origin_url(self, value: str):
463+
cross_origin_urls = self.get_module_option('cross_origin_url', '')
464+
cross_origin_urls_list = [url.strip()
465+
for url in cross_origin_urls.split(',')] # type: ignore
466+
urls = [v.strip() for v in value.split(',')]
467+
for url in urls:
468+
if url in cross_origin_urls_list:
469+
return -errno.EINVAL, '', 'Cross-origin URL already set'
470+
cross_origin_urls_list.append(url)
471+
self.set_module_option('cross_origin_url', ','.join(cross_origin_urls_list))
472+
configure_cors()
473+
return 0, 'Cross-origin URL set', ''
474+
475+
@CLIReadCommand("dashboard get-cross-origin-url")
476+
def get_cross_origin_url(self):
477+
urls = self.get_module_option('cross_origin_url', '')
478+
if urls:
479+
return HandleCommandResult(stdout=urls) # type: ignore
480+
return HandleCommandResult(stdout='No cross-origin URL set')
481+
482+
@CLIReadCommand("dashboard rm-cross-origin-url")
483+
def rm_cross_origin_url(self, value: str):
484+
urls = self.get_module_option('cross_origin_url', '')
485+
urls_list = [url.strip() for url in urls.split(',')] # type: ignore
486+
if value not in urls_list:
487+
return -errno.EINVAL, '', 'Cross-origin URL not set'
488+
urls_list.remove(value)
489+
self.set_module_option('cross_origin_url', ','.join(urls_list))
490+
configure_cors()
491+
return 0, 'Cross-origin URL removed', ''
492+
459493
def handle_command(self, inbuf, cmd):
460494
# pylint: disable=too-many-return-statements
461495
res = handle_option_command(cmd, inbuf)

0 commit comments

Comments
 (0)