Bug Description

The nova-event-callback blueprint [1] implemented the notifications of active/down ports to Nova. Before effectively starting an instance, Nova compute waits for a "VIF plugged" notification from Neutron.

I'm running ODL ML2 driver in a devstack using the master branch and I notice that the ODL driver doesn't notify back the Nova API. Hence with the default settings, the VM creation always fails.

As a workaround, set the following parameters in your nova.conf:
vif_plugging_timeout = 10
vif_plugging_is_fatal = False

With this configuration, I'm able to boot and connect to the instances but the Neutron ports are always reported as DOWN [2].

The OpenDaylight mechanism driver does not depend on an L2 agent to
plug the port. Now that nova waits for notification that the port
status is ACTIVE, the ML2 driver API is extended so that the mechanism
driver that binds a port can optionally set the port status, and the
OpenDaylight mechanism driver uses this to set the port status to
ACTIVE.

The OpenDaylight mechanism driver does not depend on an L2 agent to
plug the port. Now that nova waits for notification that the port
status is ACTIVE, the ML2 driver API is extended so that the mechanism
driver that binds a port can optionally set the port status, and the
OpenDaylight mechanism driver uses this to set the port status to
ACTIVE.