ansible_modules icon indicating copy to clipboard operation
ansible_modules copied to clipboard

[Bug]: netbox_ip_address can't assign an IP to an virtual machine interface using virtual_machine_id

Open MrDiba opened this issue 1 year ago • 0 comments

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.\"]}"
}

MrDiba avatar Feb 21 '24 14:02 MrDiba