Skip to content

Commit

Permalink
T6525: Add default dir for ext-scripts without absolute path (#4144)
Browse files Browse the repository at this point in the history
(cherry picked from commit 2f52106)

Co-authored-by: khramshinr <[email protected]>
  • Loading branch information
mergify[bot] and HollyGurza authored Oct 9, 2024
1 parent 65991f7 commit bb2fa1d
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
14 changes: 14 additions & 0 deletions smoketest/scripts/cli/test_service_snmp.py
Original file line number Diff line number Diff line change
Expand Up @@ -246,5 +246,19 @@ def test_snmpv3_view_exclude(self):
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)
13 changes: 13 additions & 0 deletions src/conf_mode/service_snmp.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
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'

Expand Down Expand Up @@ -85,8 +86,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
Expand Down

0 comments on commit bb2fa1d

Please sign in to comment.