
On 06/02/2017 03:56 PM, Bruno Rodriguez wrote:
Hello everyone,
I have some scripts that create VMs, which are in perl using libcurl and oVirt REST API. They work quite fine but I'm experiencing something unusual.
After I create the machine (let's suppose it's called server.pic.es <http://server.pic.es>) with UUID 123abc I post the following REST API call to https://... /vms/123abc/nics
<nic> <name>server.pic.es_nic1</name> <interface>virtio</interface> <network><name>VLANXXX</name></network> </nic>
The NIC is created and attached to the VM but it's network field is empty, not in the VLANXXX. I don't know if I'm missing something but this worked flawlessly with 3.6.9 REST API.
Some people could say: "it's because you're using Perl". Yup, that's probably a mental issue of mine and I should visit a doctor about using it, but it doesn't work even using a fancy REST browser extension to send requests (ARC for chromium), anyways the REST reply is a "201: Created" that looks OK...
Any idea or suggestion will be welcome. Thanks in advance!
It is not because of Perl :-) . In version 4 of the API it is mandatory to specify the NIC profile, as the network may have multiple profiles. So you need to find the identifier of that NIC profile and then send a request like this: <nic> <name>server.pic.es_nic1</name> <interface>virtio</interface> <vnic_profile id="the_id_of_the_profile"/> </nic> You can find the identifiers of the profiles like this: GET /ovirt-engine/api/networks/the_identifier_of_the_network/vnicprofildes If you want the old behavior, the behavior of version 3 of the API, you can just add to your request the 'Version: 3' HTTP header. But note that version 3 of the API is deprecated since version 4.0 of the engine, and it will be removed with version 4.2 of the engine.