Skip to content

Commit 2cbef71

Browse files
authored
Merge pull request ceph#60451 from rhcs-dashboard/nvmeof-conf-rm-fix
mgr/dashboard: rm nvmeof conf based on its daemon name Reviewed-by: Adam King <[email protected]> Reviewed-by: Afreen Misbah <[email protected]>
2 parents 72e7e10 + 4080115 commit 2cbef71

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

src/pybind/mgr/cephadm/services/nvmeof.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,19 +185,21 @@ def post_remove(self, daemon: DaemonDescription, is_failed_deploy: bool) -> None
185185
# to clean the keyring up
186186
super().post_remove(daemon, is_failed_deploy=is_failed_deploy)
187187
service_name = daemon.service_name()
188+
daemon_name = daemon.name()
188189

189190
# remove config for dashboard nvmeof gateways if any
190-
ret, out, err = self.mgr.mon_command({
191+
ret, _, err = self.mgr.mon_command({
191192
'prefix': 'dashboard nvmeof-gateway-rm',
192193
'name': service_name,
194+
'daemon_name': daemon_name
193195
})
194196
if not ret:
195-
logger.info(f'{daemon.hostname} removed from nvmeof gateways dashboard config')
197+
logger.info(f'{daemon_name} removed from nvmeof gateways dashboard config')
196198

197199
spec = cast(NvmeofServiceSpec,
198200
self.mgr.spec_store.all_specs.get(daemon.service_name(), None))
199201
if not spec:
200-
self.mgr.log.error(f'Failed to find spec for {daemon.name()}')
202+
self.mgr.log.error(f'Failed to find spec for {daemon_name}')
201203
return
202204
pool = spec.pool
203205
group = spec.group

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ def add_nvmeof_gateway(_, inbuf, name: str, group: str, daemon_name: str):
3636

3737

3838
@CLIWriteCommand('dashboard nvmeof-gateway-rm')
39-
def remove_nvmeof_gateway(_, name: str):
39+
def remove_nvmeof_gateway(_, name: str, daemon_name: str = ''):
4040
'''
4141
Remove NVMe-oF gateway configuration
4242
'''
4343
try:
44-
NvmeofGatewaysConfig.remove_gateway(name)
44+
NvmeofGatewaysConfig.remove_gateway(name, daemon_name)
4545
return 0, 'Success', ''
4646
except ManagedByOrchestratorException as ex:
4747
return -errno.EINVAL, '', str(ex)

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

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,22 @@ def add_gateway(cls, name, service_url, group, daemon_name):
7777
cls._save_config(config)
7878

7979
@classmethod
80-
def remove_gateway(cls, name):
80+
def remove_gateway(cls, name, daemon_name=None):
8181
config = cls.get_gateways_config()
8282
if name not in config['gateways']:
8383
raise NvmeofGatewayDoesNotExist(name)
84-
del config['gateways'][name]
84+
85+
if not daemon_name:
86+
del config['gateways'][name]
87+
else:
88+
# remove the daemon from the list of gateways
89+
config['gateways'][name] = [daemon for daemon in config['gateways'][name]
90+
if daemon['daemon_name'] != daemon_name]
91+
92+
# if there are no more daemons in the list, remove the gateway
93+
if not config['gateways'][name]:
94+
del config['gateways'][name]
95+
8596
cls._save_config(config)
8697

8798
@classmethod

0 commit comments

Comments
 (0)