From 2d6ebe7eab60982bcd3ba7ca03eece6902bfd47f Mon Sep 17 00:00:00 2001 From: Talkabout Date: Sat, 12 Jul 2025 01:41:32 +0200 Subject: [PATCH 1/3] fixed resolving devices by defining the correct search key --- plugins/module_utils/phpipam_helper.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/module_utils/phpipam_helper.py b/plugins/module_utils/phpipam_helper.py index e7aa6e9..5308c50 100644 --- a/plugins/module_utils/phpipam_helper.py +++ b/plugins/module_utils/phpipam_helper.py @@ -294,6 +294,8 @@ def _resolve_entity(self, key): # noqa: C901 result = self.find_device_type(self.phpipam_params[key]) elif controller == 'tools/tags': result = self.find_by_key(controller=controller, value=self.phpipam_params[key], key='type') + elif controller == 'tools/devices': + result = self.find_by_key(controller=controller, value=self.phpipam_params[key], key='hostname') elif controller == 'vlan': result = self.find_vlan(self.phpipam_params[key], self.phpipam_params['routing_domain']) elif controller == 'vrf': From 8fd4d3de14a1c906cf42b3060c67078e15005293 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Mei=C3=9Fner?= Date: Sat, 12 Jul 2025 10:23:47 +0200 Subject: [PATCH 2/3] Add test and changelog entry To guarantee that the introduced change work as expected, a test case `address_device_mapping` was added too. Second a short fragment for the changelog was added. --- .../fix_device_resolution_in_modules.yml | 2 + .../test_playbooks/address_device_mapping.yml | 53 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 changelogs/fragments/fix_device_resolution_in_modules.yml create mode 100644 tests/test_playbooks/address_device_mapping.yml diff --git a/changelogs/fragments/fix_device_resolution_in_modules.yml b/changelogs/fragments/fix_device_resolution_in_modules.yml new file mode 100644 index 0000000..56b161e --- /dev/null +++ b/changelogs/fragments/fix_device_resolution_in_modules.yml @@ -0,0 +1,2 @@ +bugfixes: +- fix resolution of device in address module - \#135 diff --git a/tests/test_playbooks/address_device_mapping.yml b/tests/test_playbooks/address_device_mapping.yml new file mode 100644 index 0000000..5d37993 --- /dev/null +++ b/tests/test_playbooks/address_device_mapping.yml @@ -0,0 +1,53 @@ +- name: Address and device module test + hosts: localhost + gather_facts: false + vars_files: + - vars/server.yml + - vars/address.yml + - vars/device.yml + vars: + address_device: + device: 'Test device' + address: '{{ base_address_data | combine(address_device) }}' + tasks: + - name: Create entities + tags: [create] + block: + - name: Create device + ansible.builtin.include_tasks: tasks/device.yml + vars: + step: create device + device: '{{ base_device_data }}' + - name: Create address + ansible.builtin.include_tasks: tasks/address.yml + vars: + step: create address + - name: Create entities again, no change + tags: [read] + block: + - name: Create device again, no change + ansible.builtin.include_tasks: tasks/device.yml + vars: + step: create device again, no change + device: '{{ base_device_data }}' + - name: Create address again, no change + ansible.builtin.include_tasks: tasks/address.yml + vars: + step: create address again, no change + - name: Delete entities + tags: [delete] + block: + - name: Delete device + ansible.builtin.include_tasks: tasks/device.yml + vars: + step: delete device + override: + state: absent + device: '{{ base_device_data | combine(override) }}' + - name: Delete address + ansible.builtin.include_tasks: tasks/address.yml + vars: + step: delete address + override: + state: absent + address: '{{ base_address_data | combine(override) }}' From 7b6e8e2bb221cbb9c3da114a77519d96a9864361 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Mei=C3=9Fner?= Date: Sat, 12 Jul 2025 11:10:30 +0200 Subject: [PATCH 3/3] Increase the amount of test runners Due to timing problems with running tests in parallel with only 4 runners we increases the amount of runners to 8 to mitigate conflicting actions. This is only a workaround and the tests need to be refactored to prevent conflicting actions by using random data. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 89322ab..cfbf83a 100644 --- a/Makefile +++ b/Makefile @@ -80,7 +80,7 @@ test-setup: | tests/test_playbooks/vars/server.yml install-deps install test -f tests/test_playbooks/vars/server.yml test-all: - coverage run -m pytest -n 4 --forked -vv 'tests/test_crud.py::test_crud' + coverage run -m pytest -n 8 --forked -vv 'tests/test_crud.py::test_crud' test-%: coverage run -m pytest --forked -vv 'tests/test_crud.py::test_case_crud' --testcase $*