Skip to content

Commit 4d8aed0

Browse files
Process KDUMP attributes in CFG_DB on init (#223)
* Process KDUMP attributes in CFG_DB on init #21625
1 parent 84c7d72 commit 4d8aed0

2 files changed

Lines changed: 28 additions & 5 deletions

File tree

scripts/hostcfgd

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1149,15 +1149,16 @@ class KdumpCfg(object):
11491149
Set the KDUMP table in CFG DB to kdump_defaults if not set by the user
11501150
"""
11511151
syslog.syslog(syslog.LOG_INFO, "KdumpCfg init ...")
1152+
data = {}
11521153
kdump_conf = kdump_table.get("config", {})
11531154
for row in self.kdump_defaults:
11541155
value = self.kdump_defaults.get(row)
11551156
if not kdump_conf.get(row):
11561157
self.config_db.mod_entry("KDUMP", "config", {row: value})
1157-
1158-
# Configure num_dumps
1159-
num_dumps = kdump_conf.get("num_dumps") or self.kdump_defaults["num_dumps"]
1160-
run_cmd(["sonic-kdump-config", "--num_dumps", num_dumps])
1158+
else:
1159+
value = kdump_conf[row]
1160+
data[row] = value
1161+
self.kdump_update("config", data)
11611162

11621163
def kdump_update(self, key, data):
11631164
syslog.syslog(syslog.LOG_INFO, "Kdump global configuration update")

tests/hostcfgd/hostcfgd_test.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,28 @@ def test_kdump_event(self):
222222
]
223223
mocked_subprocess.check_call.assert_has_calls(expected, any_order=True)
224224

225+
def test_kdump_load(self):
226+
MockConfigDb.set_config_db(HOSTCFG_DAEMON_INIT_CFG_DB)
227+
MockConfigDb.CONFIG_DB['KDUMP'] = {
228+
'config': {
229+
"enabled": "true",
230+
}
231+
}
232+
daemon = hostcfgd.HostConfigDaemon()
233+
with mock.patch('hostcfgd.subprocess') as mocked_subprocess:
234+
daemon.kdumpCfg.load(MockConfigDb.CONFIG_DB['KDUMP'])
235+
236+
expected = [
237+
call(['sonic-kdump-config', '--enable']),
238+
call(['sonic-kdump-config', '--num_dumps', '3']),
239+
call(['sonic-kdump-config', '--memory', '0M-2G:256M,2G-4G:320M,4G-8G:384M,8G-:448M']),
240+
call(['sonic-kdump-config', '--remote', 'false']), # Covering remote
241+
call(['sonic-kdump-config', '--ssh_string', 'user@localhost']), # Covering ssh_string
242+
call(['sonic-kdump-config', '--ssh_path', '/a/b/c']) # Covering ssh_path
243+
]
244+
245+
mocked_subprocess.check_call.assert_has_calls(expected, any_order=True)
246+
225247
def test_devicemeta_event(self):
226248
"""
227249
Test handling DEVICE_METADATA events.
@@ -777,4 +799,4 @@ def test_process_name_mismatch(self):
777799
mock.patch('hostcfgd.syslog.syslog') as mock_syslog:
778800
pid = self.mem_stat_cfg.get_memory_statistics_pid()
779801
self.assertIsNone(pid)
780-
mock_syslog.assert_any_call(mock.ANY, "MemoryStatisticsCfg: PID 123 does not correspond to memory_statistics_service.py.")
802+
mock_syslog.assert_any_call(mock.ANY, "MemoryStatisticsCfg: PID 123 does not correspond to memory_statistics_service.py.")

0 commit comments

Comments
 (0)