Skip to content

Commit 4080115

Browse files
committed
mgr/dashboard: rm nvmeof conf based on its daemon name
don't remove an entire entry of a service from the config if only the daemon is removed, instead just remove the entry of that particular daemon. and once all the entry are succesfully removed, remove the entry for service https://tracker.ceph.com/issues/68697 Signed-off-by: Nizamudeen A <[email protected]>
1 parent 1e4f788 commit 4080115

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)