diff options
author | Daniil Baturin <daniil@vyos.io> | 2024-10-10 16:15:54 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-10 16:15:54 +0100 |
commit | 9cb3ba7dc81401894c1f2ea281715048043da997 (patch) | |
tree | 37f824246a2de341f4be20cf6445495c850ab7bf | |
parent | ded9fa21622b12e762aba230b094608a8cbc54cc (diff) | |
parent | 4cbf3b87503bd40b045c6bb1ef3893cefda896fc (diff) | |
download | vyos-1x-9cb3ba7dc81401894c1f2ea281715048043da997.tar.gz vyos-1x-9cb3ba7dc81401894c1f2ea281715048043da997.zip |
Merge pull request #4145 from vyos/mergify/bp/sagitta/pr-3827
T6525: Add default dir for ext-scripts without absolute path (backport #3827)
-rwxr-xr-x | smoketest/scripts/cli/test_service_snmp.py | 14 | ||||
-rwxr-xr-x | src/conf_mode/service_snmp.py | 13 |
2 files changed, 27 insertions, 0 deletions
diff --git a/smoketest/scripts/cli/test_service_snmp.py b/smoketest/scripts/cli/test_service_snmp.py index b3daa90d0..7d5eaa440 100755 --- a/smoketest/scripts/cli/test_service_snmp.py +++ b/smoketest/scripts/cli/test_service_snmp.py @@ -246,5 +246,19 @@ class TestSNMPService(VyOSUnitTestSHIM.TestCase): for excluded in snmpv3_view_oid_exclude: self.assertIn(f'view {snmpv3_view} excluded .{excluded}', tmp) + def test_snmp_script_extensions(self): + extensions = { + 'default': 'snmp_smoketest_extension_script.sh', + 'external': '/run/external_snmp_smoketest_extension_script.sh' + } + + for key, val in extensions.items(): + self.cli_set(base_path + ['script-extensions', 'extension-name', key, 'script', val]) + self.cli_commit() + + self.assertEqual(get_config_value('extend default'), f'/config/user-data/{extensions["default"]}') + self.assertEqual(get_config_value('extend external'), extensions["external"]) + + if __name__ == '__main__': unittest.main(verbosity=2) diff --git a/src/conf_mode/service_snmp.py b/src/conf_mode/service_snmp.py index f65d0d6bc..24c180b98 100755 --- a/src/conf_mode/service_snmp.py +++ b/src/conf_mode/service_snmp.py @@ -39,6 +39,7 @@ config_file_client = r'/etc/snmp/snmp.conf' config_file_daemon = r'/etc/snmp/snmpd.conf' config_file_access = r'/usr/share/snmp/snmpd.conf' config_file_user = r'/var/lib/snmp/snmpd.conf' +default_script_dir = r'/config/user-data/' systemd_override = r'/run/systemd/system/snmpd.service.d/override.conf' systemd_service = 'snmpd.service' @@ -83,8 +84,20 @@ def get_config(config=None): tmp = {'::1': {'port': '161'}} snmp['listen_address'] = dict_merge(tmp, snmp['listen_address']) + if 'script_extensions' in snmp and 'extension_name' in snmp['script_extensions']: + for key, val in snmp['script_extensions']['extension_name'].items(): + if 'script' not in val: + continue + script_path = val['script'] + # if script has not absolute path, use pre configured path + if not os.path.isabs(script_path): + script_path = os.path.join(default_script_dir, script_path) + + snmp['script_extensions']['extension_name'][key]['script'] = script_path + return snmp + def verify(snmp): if 'deleted' in snmp: return None |