My setup is based on icehouse-2, KVM, Neutron setup with ML2 and the linux bridge agent, CentOS 6.5 and LVM as the ephemeral backend.
The OS should not matter in this, LVM should not matter either, just make sure the snapshot takes the VM offline.
How to reproduce:
1. create one VM on a compute node (make sure only one VM is present).
2. snapshot the VM (offline).
3. linux bridge removes the tap interface from the bridge and decides to remove the bridge also since there are no other interfaces present.
4. nova tries to resume the VM and fails since no bridge is present (libvirt error, can't get the bridge MTU).
Side question:
Why do both neutron and nova deal with the bridge ?
I can understand the need to remove empty bridges but I believe nova should be the one to do it if nova is dealing mainly with the bridge itself.
More information:
During the snapshot Neutron (linux bridge) is called:
(neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent)
treat_devices_removed is called and removes the tap interface and calls self.br_mgr.remove_empty_bridges
On resume:
nova/virt/libvirt/driver.py in the snapshot method fails at:
if CONF.libvirt.virt_type != 'lxc' and not live_snapshot:
if state == power_state.RUNNING:
new_dom = self._create_domain(domain=virt_dom)
Having more than one VM on the same bridge works fine since neutron (the linux bridge agent) only removes an empty bridge.
Can you please provide more details to reproduce the issue?