← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1293540] [NEW] nova should make sure the bridge exists before resuming a VM after an offline snapshot

 

Public bug reported:

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.

** Affects: nova
     Importance: Undecided
         Status: New


** Tags: low-hanging-fruit

** Description changed:

- 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. 
+ 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 ? 
+ 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 calls snapshot and fails at:
+ 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)
+                     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.

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1293540

Title:
  nova should make sure the bridge exists before resuming a VM after an
  offline snapshot

Status in OpenStack Compute (Nova):
  New

Bug description:
  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.

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1293540/+subscriptions


Follow ups

References