ansible_modules
ansible_modules copied to clipboard
[Bug]: netbox_ip_address can't assign an IP to an virtual machine interface using virtual_machine_id
Ansible NetBox Collection version
v3.17.0
Ansible version
ansible [core 2.15.5]
config file = /home/ansible/ansible/ansible.cfg
configured module search path = ['/home/ansible/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/lib/python3.11/dist-packages/ansible
ansible collection location = /home/ansible/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/local/bin/ansible
python version = 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0] (/usr/bin/python3)
jinja version = 3.1.2
libyaml = True
NetBox version
v3.4.7
Python version
3.11
Steps to Reproduce
- name: "Reserve virtual machine name"
netbox.netbox.netbox_virtual_machine:
netbox_url: "{{ netbox_url }}"
netbox_token: "{{ netbox_token }}"
data:
name: "{{ vm_name }}"
cluster: "cluster1"
memory: "{{ vm_ram }}"
site: "moon"
vcpus: "{{ vm_cores }}"
platform: "ubuntu"
virtual_machine_role: "vm"
state: present
register: vm
- name: "Add VM backend interface to {{ vm_name }}"
netbox.netbox.netbox_vm_interface:
netbox_url: "{{ netbox_url }}"
netbox_token: "{{ netbox_token }}"
data:
virtual_machine:
id: "{{ vm.virtual_machine.id }}"
name: "backend"
description: "backend interface"
register: device
- name: "Add backend IP address for {{ vm_name }}"
netbox.netbox.netbox_ip_address:
netbox_url: "{{ netbox_url }}"
netbox_token: "{{ netbox_token }}"
data:
prefix: "10.1.1.0/24"
assigned_object:
virtual_machine:
id: "{{ vm.virtual_machine.id }}"
name: "backend"
dns_name: "{{ vm_name }}.example.com"
state: new
register: backend_vm_ip
Expected Behavior
I expect that the virtual machine with the specified ID and interface name gets an newly created IP address.
More info in #1117
Observed Behavior
The full traceback is:
File "/tmp/ansible_netbox.netbox.netbox_ip_address_payload_zc5dm2_b/ansible_netbox.netbox.netbox_ip_address_payload.zip/ansible_collections/netbox/netbox/plugins/module_utils/netbox_utils.py", line 779, in _nb_endpoint_get
response = nb_endpoint.get(**query_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pynetbox/core/endpoint.py", line 148, in get
ret = next(resp, None)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pynetbox/core/response.py", line 117, in __next__
next(self.response), self.endpoint.api, self.endpoint
^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pynetbox/core/query.py", line 317, in get
req = self._make_call(add_params=add_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pynetbox/core/query.py", line 284, in _make_call
raise RequestError(req)
fatal: [localhost]: FAILED! => {
"changed": false,
"invocation": {
"module_args": {
"cert": null,
"data": {
"address": null,
"assigned_object": {
"device": null,
"name": "backend",
"virtual_machine": "{'id': '101'}"
},
"comments": null,
"custom_fields": null,
"description": null,
"dns_name": "vm.example.com",
"family": null,
"interface": null,
"nat_inside": null,
"prefix": "10.1.1.0/24",
"role": null,
"status": null,
"tags": null,
"tenant": null,
"vrf": null
},
"netbox_token": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"netbox_url": "https://ipam.example.com",
"query_params": null,
"state": "new",
"validate_certs": true
}
},
"msg": "{\"virtual_machine_id\":[\"“name” is not a valid value.\"]}"
}