Skip to content

Commit d6fba83

Browse files
authored
Merge pull request #128 from stackhpc/upstream/2024.1-2025-06-30
Synchronise 2024.1 with upstream
2 parents 3ce9491 + b78d0a8 commit d6fba83

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

networking_generic_switch/devices/netmiko_devices/__init__.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,31 @@ def __init__(self, device_cfg, *args, **kwargs):
123123
self.config['session_log_record_writes'] = True
124124
self.config['session_log_file_mode'] = 'append'
125125

126+
_NUMERIC_CAST = {
127+
"port": int,
128+
"global_delay_factor": float,
129+
"conn_timeout": float,
130+
"auth_timeout": float,
131+
"banner_timeout": float,
132+
"blocking_timeout": float,
133+
"timeout": float,
134+
"session_timeout": float,
135+
"read_timeout_override": float,
136+
"keepalive": int,
137+
}
138+
139+
for key, expected_type in _NUMERIC_CAST.items():
140+
value = self.config.get(key)
141+
if isinstance(value, str):
142+
try:
143+
self.config[key] = expected_type(value)
144+
except ValueError:
145+
LOG.error(
146+
"Invalid value %s for %s; expected %s",
147+
value, key, expected_type.__name__,
148+
)
149+
raise exc.GenericSwitchNetmikoConfigError()
150+
126151
self.lock_kwargs = {
127152
'locks_pool_size': int(self.ngs_config['ngs_max_connections']),
128153
'locks_prefix': self.config.get(

networking_generic_switch/tests/unit/test_devices.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,27 @@ def test__get_ssh_disabled_algorithms(self):
219219
}
220220
self.assertEqual(expected, algos)
221221

222+
def test_float_params_cast(self):
223+
config = {
224+
"device_type": 'netmiko_ovs_linux',
225+
"ip": "10.1.2.3",
226+
"username": "u",
227+
"password": "p",
228+
"conn_timeout": "20.0",
229+
"global_delay_factor": "2.5",
230+
"port": "2222",
231+
}
232+
device = devices.device_manager(config)
233+
234+
self.assertIsInstance(device.config["conn_timeout"], float)
235+
self.assertEqual(device.config["conn_timeout"], 20.0)
236+
237+
self.assertIsInstance(device.config["global_delay_factor"], float)
238+
self.assertEqual(device.config["global_delay_factor"], 2.5)
239+
240+
self.assertIsInstance(device.config["port"], int)
241+
self.assertEqual(device.config["port"], 2222)
242+
222243
def test_driver_load_config_override(self):
223244
device_cfg = {"device_type": 'netmiko_ovs_linux',
224245
"vlan_translation_supported": True}

0 commit comments

Comments
 (0)