In our environment, we assign VMs a default NIC without the userdata service, however, we also assign a secondary network that has the userdata service enabled. In previous releases, and confirmed in the issue below, the API simply warned about the default NIC not supporting userdata but continued to go on to create the virtual machine.
As of 4.5.1, The API completely errors out and does not create the VM, even though one of the NICs supports the userdata service. I can get around this behavior by calling deployVirtualMachine with 'startvm' set to false, and then a call to updateVirtualMachine with userdata=<my userdata>. Of course, this breaks the automation that we have in place.
I really don't understand why the API would fail to create the VM as long as one of the NICs supported the userdata service. This seems like a regression from the previous releases and should be fixed. Here is the issue in which the change was made:
Steps to reproduce:
1. Create two networks in CloudStack, one with userdata service enabled, and one without.
2. Use deployVirtualMachine API call to create a virtual machine with both networks as well as userdata. The first (default) network should be the one without the userdata service and the second network should be the userdata-enabled network.
3. The API should present the following error: Error: Unable to deploy VM as UserData is provided while deploying the VM, but there is no support for UserData service in the default network <Network ID>