diff --git a/sonic_platform_base/local_users_passwords_reset_base.py b/sonic_platform_base/local_users_passwords_reset_base.py new file mode 100644 index 000000000..460c0f9e6 --- /dev/null +++ b/sonic_platform_base/local_users_passwords_reset_base.py @@ -0,0 +1,25 @@ +''' + local_users_passwords_reset_base.py + + Abstract base class for implementing platform-specific + local users' passwords reset base functionality for SONiC +''' + + +class LocalUsersConfigurationResetBase(object): + """ + Abstract base class for resetting local users' passwords on the switch + """ + def should_trigger(self): + ''' + define the condition to trigger + ''' + # the condition to trigger start() method, the default implementation will be by checking if a long reboot press was detected. + raise NotImplementedError + + def start(self): + ''' + define the functionality + ''' + # the implementation of deleting non-default users and restoring original passwords for default users and expiring them + raise NotImplementedError diff --git a/tests/local_users_passwords_reset_base_test.py b/tests/local_users_passwords_reset_base_test.py new file mode 100644 index 000000000..d7c46f0f1 --- /dev/null +++ b/tests/local_users_passwords_reset_base_test.py @@ -0,0 +1,31 @@ +''' +Test LocalUsersConfigurationResetBase module +''' + +from unittest import mock +from sonic_platform_base.local_users_passwords_reset_base import LocalUsersConfigurationResetBase + + +class TestLocalUsersConfigurationResetBase: + ''' + Collection of LocalUsersConfigurationResetBase test methods + ''' + @staticmethod + def test_fan_base(): + ''' + Verify unimplemented methods + ''' + base = LocalUsersConfigurationResetBase() + not_implemented_methods = [ + (base.should_trigger,), + (base.start,)] + + for method in not_implemented_methods: + expected_exception = False + try: + func = method[0] + args = method[1:] + func(*args) + except Exception as exc: + expected_exception = isinstance(exc, NotImplementedError) + assert expected_exception