Contrail blocks updating VNIC type [0], however it is a legal use case when using Ironic (baremetal provisioner) [1] due to several reasons:
1. With mixed clouds user may not know if instance will be placed on KVM or baremetal server.
2. Nova always create a ports with 'normal' vnic type, but even if it can pick vnic type dynamically we still need to update it for case when user pre-created a port (see case 1)
Contrail blocks updating VNIC type [0], however it is a legal use case when using Ironic (baremetal provisioner) [1] due to several reasons:
1. With mixed clouds user may not know if instance will be placed on KVM or baremetal server.
2. Nova always create a ports with 'normal' vnic type, but even if it can pick vnic type dynamically we still need to update it for case when user pre-created a port (see case 1)
[0] https:/ /github. com/Juniper/ contrail- controller/ blob/e3a0a81/ src/config/ api-server/ vnc_cfg_ types.py# L1303
[1] https:/ /github. com/openstack/ ironic/ blob/b5863eb6b1 e61092d42d05ae9 e18918b598eb406 /ironic/ drivers/ modules/ network/ common. py#L255