Skip to content

Commit 12c7752

Browse files
authored
Merge pull request ceph#57716 from rhcs-dashboard/add-rgw-multisite-wizard-api
mgr/dashboard: add api for rgw multisite replication wizard Reviewed-by: Nizamudeen A <[email protected]>
2 parents d95de4f + 1f06e87 commit 12c7752

File tree

8 files changed

+392
-95
lines changed

8 files changed

+392
-95
lines changed

src/pybind/mgr/dashboard/controllers/multi_cluster.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import re
66
import tempfile
77
import time
8+
from typing import Any, Dict
89
from urllib.parse import urlparse
910

1011
import requests
@@ -230,7 +231,7 @@ def load_multi_cluster_config(self):
230231

231232
@Endpoint('PUT')
232233
@UpdatePermission
233-
def set_config(self, config: object):
234+
def set_config(self, config: Dict[str, Any]):
234235
multicluster_config = self.load_multi_cluster_config()
235236
multicluster_config.update({'current_url': config['url']})
236237
multicluster_config.update({'current_user': config['user']})

src/pybind/mgr/dashboard/controllers/rgw.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from ..services.auth import AuthManager, JwtManager
1616
from ..services.ceph_service import CephService
1717
from ..services.rgw_client import _SYNC_GROUP_ID, NoRgwDaemonsException, RgwClient, RgwMultisite
18+
from ..services.service import RgwServiceManager
1819
from ..tools import json_str_to_object, str_to_bool
1920
from . import APIDoc, APIRouter, BaseController, CreatePermission, \
2021
CRUDCollectionMethod, CRUDEndpoint, DeletePermission, Endpoint, \
@@ -112,6 +113,27 @@ def migrate(self, daemon_name=None, realm_name=None, zonegroup_name=None, zone_n
112113
secret_key)
113114
return result
114115

116+
@RESTController.Collection(method='POST', path='/multisite-replications')
117+
@allow_empty_body
118+
# pylint: disable=W0102,W0613
119+
def setup_multisite_replication(self, daemon_name=None, realm_name=None, zonegroup_name=None,
120+
zonegroup_endpoints=None, zone_name=None, zone_endpoints=None,
121+
username=None, cluster_fsid=None):
122+
multisite_instance = RgwMultisite()
123+
result = multisite_instance.setup_multisite_replication(realm_name, zonegroup_name,
124+
zonegroup_endpoints, zone_name,
125+
zone_endpoints, username,
126+
cluster_fsid)
127+
return result
128+
129+
@RESTController.Collection(method='PUT', path='/setup-rgw-credentials')
130+
@allow_empty_body
131+
# pylint: disable=W0102,W0613
132+
def restart_rgw_daemons_and_set_credentials(self):
133+
rgw_service_manager_instance = RgwServiceManager()
134+
result = rgw_service_manager_instance.restart_rgw_daemons_and_set_credentials()
135+
return result
136+
115137

116138
@APIRouter('rgw/multisite', Scope.RGW)
117139
@APIDoc("RGW Multisite Management API", "RgwMultisite")
@@ -1075,11 +1097,9 @@ def get_realm_tokens(self):
10751097
@UpdatePermission
10761098
@allow_empty_body
10771099
# pylint: disable=W0613
1078-
def import_realm_token(self, realm_token, zone_name, port, placement_spec):
1100+
def import_realm_token(self, realm_token, zone_name, port, placement_spec=None):
10791101
try:
1080-
multisite_instance = RgwMultisite()
10811102
result = CephService.import_realm_token(realm_token, zone_name, port, placement_spec)
1082-
multisite_instance.update_period()
10831103
return result
10841104
except NoRgwDaemonsException as e:
10851105
raise DashboardException(e, http_status_code=404, component='rgw')

src/pybind/mgr/dashboard/module.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
from .services import nvmeof_cli # noqa # pylint: disable=unused-import
3333
from .services.auth import AuthManager, AuthManagerTool, JwtManager
3434
from .services.exception import dashboard_exception_handler
35-
from .services.rgw_client import configure_rgw_credentials
35+
from .services.service import RgwServiceManager
3636
from .services.sso import SSO_COMMANDS, handle_sso_command
3737
from .settings import handle_option_command, options_command_list, options_schema_list
3838
from .tools import NotificationQueue, RequestLoggingTool, TaskManager, \
@@ -417,7 +417,8 @@ def set_mgr_created_self_signed_cert(self):
417417
@CLIWriteCommand("dashboard set-rgw-credentials")
418418
def set_rgw_credentials(self):
419419
try:
420-
configure_rgw_credentials()
420+
rgw_service_manager = RgwServiceManager()
421+
rgw_service_manager.configure_rgw_credentials()
421422
except Exception as error:
422423
return -errno.EINVAL, '', str(error)
423424

src/pybind/mgr/dashboard/openapi.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11669,7 +11669,6 @@ paths:
1166911669
- realm_token
1167011670
- zone_name
1167111671
- port
11672-
- placement_spec
1167311672
type: object
1167411673
responses:
1167511674
'201':

src/pybind/mgr/dashboard/services/orchestrator.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,9 @@ def reload(self, service_type, service_ids):
130130
service_ids = [service_ids]
131131

132132
completion_list = [
133-
self.api.service_action('reload', service_type, service_name,
134-
service_id)
135-
for service_name, service_id in service_ids
133+
self.api.service_action('restart', f'{service_type}.{service_id}')
134+
for service_id in service_ids
136135
]
137-
self.api.orchestrator_wait(completion_list)
138136
for c in completion_list:
139137
raise_if_exception(c)
140138

0 commit comments

Comments
 (0)