Skip to content

Commit 68ab0ed

Browse files
authored
Merge pull request ceph#54531 from rhcs-dashboard/port-manipulation-rgw
mgr/dashboard: get rgw port from ssl_endpoint Reviewed-by: Ankush Behl <[email protected]>
2 parents c51a3bf + cacc2eb commit 68ab0ed

File tree

2 files changed

+80
-5
lines changed

2 files changed

+80
-5
lines changed

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

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,16 @@ def list(self) -> List[dict]:
134134
for service in server['services']:
135135
metadata = service['metadata']
136136

137+
frontend_config = metadata['frontend_config#0']
138+
port_match = re.search(r"port=(\d+)", frontend_config)
139+
port = None
140+
if port_match:
141+
port = port_match.group(1)
142+
else:
143+
match_from_endpoint = re.search(r"endpoint=\S+:(\d+)", frontend_config)
144+
if match_from_endpoint:
145+
port = match_from_endpoint.group(1)
146+
137147
# extract per-daemon service data and health
138148
daemon = {
139149
'id': metadata['id'],
@@ -144,7 +154,7 @@ def list(self) -> List[dict]:
144154
'zonegroup_name': metadata['zonegroup_name'],
145155
'zone_name': metadata['zone_name'],
146156
'default': instance.daemon.name == metadata['id'],
147-
'port': int(re.findall(r'port=(\d+)', metadata['frontend_config#0'])[0])
157+
'port': int(port) if port else None
148158
}
149159

150160
daemons.append(daemon)

src/pybind/mgr/dashboard/tests/test_rgw.py

Lines changed: 69 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,13 @@ def test_list(self, send_command):
7979
RgwStub.get_settings()
8080
mgr.list_servers.return_value = [{
8181
'hostname': 'host1',
82-
'services': [{'id': '4832', 'type': 'rgw'}, {'id': '5356', 'type': 'rgw'}]
82+
'services': [
83+
{'id': '4832', 'type': 'rgw'},
84+
{'id': '5356', 'type': 'rgw'},
85+
{'id': '5357', 'type': 'rgw'},
86+
{'id': '5358', 'type': 'rgw'},
87+
{'id': '5359', 'type': 'rgw'}
88+
]
8389
}]
8490
mgr.get_metadata.side_effect = [
8591
{
@@ -96,8 +102,34 @@ def test_list(self, send_command):
96102
'realm_name': 'realm2',
97103
'zonegroup_name': 'zg2',
98104
'zone_name': 'zone2',
99-
'frontend_config#0': 'beast port=80 ssl_port=443 ssl_certificate=config:/config'
100-
}]
105+
'frontend_config#0': 'beast ssl_port=443 ssl_certificate=config:/config'
106+
},
107+
{
108+
'ceph_version': 'ceph version master (dev)',
109+
'id': 'daemon3',
110+
'realm_name': 'realm3',
111+
'zonegroup_name': 'zg3',
112+
'zone_name': 'zone3',
113+
'frontend_config#0':
114+
'beast ssl_endpoint=0.0.0.0:8080 ssl_certificate=config:/config'
115+
},
116+
{
117+
'ceph_version': 'ceph version master (dev)',
118+
'id': 'daemon4',
119+
'realm_name': 'realm4',
120+
'zonegroup_name': 'zg4',
121+
'zone_name': 'zone4',
122+
'frontend_config#0': 'beast ssl_certificate=config:/config'
123+
},
124+
{
125+
'ceph_version': 'ceph version master (dev)',
126+
'id': 'daemon5',
127+
'realm_name': 'realm5',
128+
'zonegroup_name': 'zg5',
129+
'zone_name': 'zone5',
130+
'frontend_config#0':
131+
'beast endpoint=0.0.0.0:8445 ssl_certificate=config:/config'
132+
}, ]
101133
self._get('/test/api/rgw/daemon')
102134
self.assertStatus(200)
103135
self.assertJsonBody([{
@@ -119,7 +151,40 @@ def test_list(self, send_command):
119151
'zonegroup_name': 'zg2',
120152
'zone_name': 'zone2',
121153
'default': False,
122-
'port': 80
154+
'port': 443,
155+
},
156+
{
157+
'id': 'daemon3',
158+
'service_map_id': '5357',
159+
'version': 'ceph version master (dev)',
160+
'server_hostname': 'host1',
161+
'realm_name': 'realm3',
162+
'zonegroup_name': 'zg3',
163+
'zone_name': 'zone3',
164+
'default': False,
165+
'port': 8080,
166+
},
167+
{
168+
'id': 'daemon4',
169+
'service_map_id': '5358',
170+
'version': 'ceph version master (dev)',
171+
'server_hostname': 'host1',
172+
'realm_name': 'realm4',
173+
'zonegroup_name': 'zg4',
174+
'zone_name': 'zone4',
175+
'default': False,
176+
'port': None,
177+
},
178+
{
179+
'id': 'daemon5',
180+
'service_map_id': '5359',
181+
'version': 'ceph version master (dev)',
182+
'server_hostname': 'host1',
183+
'realm_name': 'realm5',
184+
'zonegroup_name': 'zg5',
185+
'zone_name': 'zone5',
186+
'default': False,
187+
'port': 8445,
123188
}])
124189

125190
def test_list_empty(self):

0 commit comments

Comments
 (0)