Skip to content

Commit 41d4a63

Browse files
Issue #22407: ConfigReload fails when RADIUS statistics is enabled
RADIUS statistics adds a config entry which is not valid in YANG. The option adds the True/False boolean values instead of the 'true'/'false' booleans that YANG defines, which causes failures when trying to reload/replace the config.
1 parent c5df741 commit 41d4a63

File tree

2 files changed

+54
-2
lines changed

2 files changed

+54
-2
lines changed

config/aaa.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -479,9 +479,9 @@ def statistics(option):
479479
del_table_key('RADIUS', 'global', 'statistics')
480480
else:
481481
if option == 'enable':
482-
add_table_kv('RADIUS', 'global', 'statistics', True)
482+
add_table_kv('RADIUS', 'global', 'statistics', 'true')
483483
elif option == 'disable':
484-
add_table_kv('RADIUS', 'global', 'statistics', False)
484+
add_table_kv('RADIUS', 'global', 'statistics', 'false')
485485
radius.add_command(statistics)
486486

487487

tests/radius_test.py

+52
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,58 @@ def test_config_radius_authtype(self, get_cmd_module):
207207
assert result.exit_code == 0
208208
assert result.output == show_radius_default_output
209209

210+
def test_config_radius_statistics(self, get_cmd_module):
211+
(config, show) = get_cmd_module
212+
runner = CliRunner()
213+
db = Db()
214+
db.cfgdb.delete_table("RADIUS")
215+
216+
result = runner.invoke(config.config.commands["radius"],
217+
["statistics", "enable"])
218+
print(result.exit_code)
219+
print(result.output)
220+
assert result.exit_code == 0
221+
assert result.output == config_radius_empty_output
222+
223+
db.cfgdb.mod_entry("RADIUS", "global", {'statistics': 'true'})
224+
225+
result = runner.invoke(show.cli.commands["radius"], [], obj=db)
226+
print(result.exit_code)
227+
print(result.output)
228+
assert result.exit_code == 0
229+
assert "RADIUS global statistics true" in result.output
230+
231+
result = runner.invoke(config.config.commands["radius"],
232+
["statistics", "disable"])
233+
print(result.exit_code)
234+
print(result.output)
235+
assert result.exit_code == 0
236+
assert result.output == config_radius_empty_output
237+
238+
db.cfgdb.mod_entry("RADIUS", "global", {'statistics': 'false'})
239+
240+
result = runner.invoke(show.cli.commands["radius"], [], obj=db)
241+
print(result.exit_code)
242+
print(result.output)
243+
assert result.exit_code == 0
244+
assert "RADIUS global statistics false" in result.output
245+
246+
result = runner.invoke(config.config.commands["radius"],
247+
["statistics", "default"])
248+
print(result.exit_code)
249+
print(result.output)
250+
assert result.exit_code == 0
251+
assert result.output == config_radius_empty_output
252+
253+
db.cfgdb.mod_entry("RADIUS", "global", {'statistics': 'default'})
254+
255+
result = runner.invoke(show.cli.commands["radius"], [], obj=db)
256+
print(result.exit_code)
257+
print(result.output)
258+
assert result.exit_code == 0
259+
assert "RADIUS global statistics true" not in result.output
260+
assert "RADIUS global statistics false" not in result.output
261+
210262
@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(return_value=True))
211263
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_set_entry", mock.Mock(side_effect=ValueError))
212264
def test_config_radius_server_invalidkey_yang_validation(self):

0 commit comments

Comments
 (0)