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 $* 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/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': 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) }}'