diff options
| author | gideon-kuijt-northwave <gideon.kuijt@northwave-cybersecurity.com> | 2026-04-07 13:46:41 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-07 12:46:41 +0100 |
| commit | 16e6f21de8e90833e2284aeab6cd39d2e1482155 (patch) | |
| tree | 9c12dc7b817c4e234a6c3a15466372878ba0ea79 | |
| parent | fdc70e9ce400c5551b9dd83a7c979ba0db8209ef (diff) | |
| download | vyos.vyos-16e6f21de8e90833e2284aeab6cd39d2e1482155.tar.gz vyos.vyos-16e6f21de8e90833e2284aeab6cd39d2e1482155.zip | |
T8205 Ensure the vyos_user module works when user properties are defined in… (#445)
* Ensure the vyos_user module works when user properties are defined in aggregate
Ensure the vyos_user module works when user properties are defined in aggregate. Previously the value variable is not filled when a property is configured as a property of a user. This gives a python error when the value variable is called.
* Add unit test for aggregate vyos_user module
* Create vyos_user_aggregate_fix.yml
Create changelog for vyos_user aggregate bugfix
* Rename vyos_user_aggregate_fix.yml to T8205_vyos_user_aggregate_fix.yml
* Rename T8205_vyos_user_aggregate_fix.yml to T8205_vyos_user_aggregate_fix.yml
Remove unintended whitespace in changelog fragment: T8205_vyos_user_aggregate_fix.yml
---------
Co-authored-by: omnom62 <75066712+omnom62@users.noreply.github.com>
Co-authored-by: Daniil Baturin <daniil@baturin.org>
| -rw-r--r-- | changelogs/fragments/T8205_vyos_user_aggregate_fix.yml | 3 | ||||
| -rw-r--r-- | plugins/modules/vyos_user.py | 2 | ||||
| -rw-r--r-- | tests/unit/modules/network/vyos/test_vyos_user.py | 40 |
3 files changed, 45 insertions, 0 deletions
diff --git a/changelogs/fragments/T8205_vyos_user_aggregate_fix.yml b/changelogs/fragments/T8205_vyos_user_aggregate_fix.yml new file mode 100644 index 00000000..b9f5dead --- /dev/null +++ b/changelogs/fragments/T8205_vyos_user_aggregate_fix.yml @@ -0,0 +1,3 @@ +--- +bugfixes: + - plugins/modules/vyos_user.py - Fix aggregate option when extra user properties are defined diff --git a/plugins/modules/vyos_user.py b/plugins/modules/vyos_user.py index 7aaa45ae..d2f23509 100644 --- a/plugins/modules/vyos_user.py +++ b/plugins/modules/vyos_user.py @@ -363,6 +363,8 @@ def get_param_value(key, item, module): # if key doesn't exist in the item, get it from module.params if not item.get(key): value = module.params[key] + else: + value = item.get(key) # validate the param value (if validator func exists) validator = globals().get("validate_%s" % key) diff --git a/tests/unit/modules/network/vyos/test_vyos_user.py b/tests/unit/modules/network/vyos/test_vyos_user.py index e8c50783..d1e7f162 100644 --- a/tests/unit/modules/network/vyos/test_vyos_user.py +++ b/tests/unit/modules/network/vyos/test_vyos_user.py @@ -237,3 +237,43 @@ class TestVyosUserModule(TestVyosModule): ), ) result = self.execute_module(changed=False) + + def test_vyos_user_aggregate_with_public_keys(self): + set_module_args( + dict( + aggregate=[ + dict( + name="user1", + public_keys=[ + dict( + name="user1@host1", + key="AAAAC3NzaC1lZDI1NTE5AAAAIFIR0jrMvBdmvTJNY5EDhOD+eixvbOinhY1eBU2u", + type="ssh-ed25519", + ), + ], + ), + dict( + name="user2", + public_keys=[ + dict( + name="user2@host2", + key="AAAAC3NzaC1lZDI1NTE5AAAAIFIR0jrMvBdmvTJNY5EDhOD+eixvbOinhY1eBU2u", + type="ssh-ed25519", + ), + ], + ), + ], + ), + ) + result = self.execute_module(changed=True) + self.assertEqual( + sorted(result["commands"]), + sorted( + [ + "set system login user user1 authentication public-keys user1@host1 key 'AAAAC3NzaC1lZDI1NTE5AAAAIFIR0jrMvBdmvTJNY5EDhOD+eixvbOinhY1eBU2u'", + "set system login user user1 authentication public-keys user1@host1 type 'ssh-ed25519'", + "set system login user user2 authentication public-keys user2@host2 key 'AAAAC3NzaC1lZDI1NTE5AAAAIFIR0jrMvBdmvTJNY5EDhOD+eixvbOinhY1eBU2u'", + "set system login user user2 authentication public-keys user2@host2 type 'ssh-ed25519'", + ], + ), + ) |
