Skip to content

Commit 4cbf3b8

Browse files
HollyGurzamergify[bot]
authored andcommitted
T6525: Add default dir for ext-scripts without absolute path
(cherry picked from commit 2f52106)
1 parent ded9fa2 commit 4cbf3b8

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

smoketest/scripts/cli/test_service_snmp.py

+14
Original file line numberDiff line numberDiff line change
@@ -246,5 +246,19 @@ def test_snmpv3_view_exclude(self):
246246
for excluded in snmpv3_view_oid_exclude:
247247
self.assertIn(f'view {snmpv3_view} excluded .{excluded}', tmp)
248248

249+
def test_snmp_script_extensions(self):
250+
extensions = {
251+
'default': 'snmp_smoketest_extension_script.sh',
252+
'external': '/run/external_snmp_smoketest_extension_script.sh'
253+
}
254+
255+
for key, val in extensions.items():
256+
self.cli_set(base_path + ['script-extensions', 'extension-name', key, 'script', val])
257+
self.cli_commit()
258+
259+
self.assertEqual(get_config_value('extend default'), f'/config/user-data/{extensions["default"]}')
260+
self.assertEqual(get_config_value('extend external'), extensions["external"])
261+
262+
249263
if __name__ == '__main__':
250264
unittest.main(verbosity=2)

src/conf_mode/service_snmp.py

+13
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
config_file_daemon = r'/etc/snmp/snmpd.conf'
4040
config_file_access = r'/usr/share/snmp/snmpd.conf'
4141
config_file_user = r'/var/lib/snmp/snmpd.conf'
42+
default_script_dir = r'/config/user-data/'
4243
systemd_override = r'/run/systemd/system/snmpd.service.d/override.conf'
4344
systemd_service = 'snmpd.service'
4445

@@ -83,8 +84,20 @@ def get_config(config=None):
8384
tmp = {'::1': {'port': '161'}}
8485
snmp['listen_address'] = dict_merge(tmp, snmp['listen_address'])
8586

87+
if 'script_extensions' in snmp and 'extension_name' in snmp['script_extensions']:
88+
for key, val in snmp['script_extensions']['extension_name'].items():
89+
if 'script' not in val:
90+
continue
91+
script_path = val['script']
92+
# if script has not absolute path, use pre configured path
93+
if not os.path.isabs(script_path):
94+
script_path = os.path.join(default_script_dir, script_path)
95+
96+
snmp['script_extensions']['extension_name'][key]['script'] = script_path
97+
8698
return snmp
8799

100+
88101
def verify(snmp):
89102
if 'deleted' in snmp:
90103
return None

0 commit comments

Comments
 (0)