Upstream bug: https://bugs.launchpad.net/nova/+bug/1532890
Sometimes VM lose network connectivity after rollback with partition preservation of compute node where it was booted.
Step to reproduce:
1. Deploy cluster (1 controller + 2 compute, neutron VLAN)
2. Make sure that cluster is operational. For this run OSTF tests
3. Boot VM and assign to it proper security rules for network connectivity
4. Ping VM
5. Enable partition preservation for compute node (exclude partition for OS) where VM is booted:
- download disk.yaml 'fuel node --node <NODE_ID> --disk --download'
- edit downloaded disk.yaml. Change flag 'keep_data' on true for partition, exclude partition for OS
- upload disk.yaml 'fuel node --node <NODE_ID> --disk --upload'
6. Rollback compute node:
- fuel node --node-id <NODE_ID> --provision
- fuel node --node-id <NODE_ID> --deploy
7. Ping VM
Expected result:
VM is accessible by ICMP
Actual result:
VM is running and accessible by VNC, but VM is not accessible by ICMP
VERSION:
feature_groups:
- mirantis
production: "docker"
release: "7.0"
openstack_version: "2014.2.2-7.0"
api: "1.0"
build_number: "44"
build_id: "2015-07-16_10-46-35"
nailgun_sha: "bb8b7ce29abf258e4a73d227f78bb07a56bc5199"
python-fuelclient_sha: "fe14335efc3c800162b72d1e333e5179314e2ff4"
fuel-agent_sha: "22b566f9161daab93bd3a3324307332e01925bb3"
astute_sha: "3cc1bb6b2a7cc2b437c6c6ffc6366653b08749bf"
fuel-library_sha: "36a02ee002f7071470d388089bfa95b14482d5bd"
fuel-ostf_sha: "5b5ec07f15b1d15e452366e838c4c830010ee795"
fuelmain_sha: "533d1722016da9774fb406f86d35942e5870ed73"
The small research was done: OVS don't create veth pair for connection of br-int and bridge which was created for VM.
For example,
root@node-3:~# ovs-vsctl show 27f1-495f- 8132-f75c6143f8 ec
Interface "qvo39a97be3-88"
Interface int-br-prv
type: patch
options: {peer=phy-br-prv}
Interface br-int
type: internal
Interface "qvob3dbdaaa-24"
Interface phy-br-prv
type: patch
options: {peer=int-br-prv}
Interface "p_br-prv-0"
type: internal
Interface br-prv
type: internal
tap1ceb0108- 7e
tap39a97be3- 88
tapb3dbdaaa- 24
ec7e0e5e-
Bridge br-int
fail_mode: secure
Port "qvo39a97be3-88"
tag: 1
Port int-br-prv
Port br-int
Port "qvob3dbdaaa-24"
tag: 1
Bridge br-prv
Port phy-br-prv
Port "p_br-prv-0"
Port br-prv
ovs_version: "2.3.1"
root@node-3:~# brctl show
bridge name bridge id STP enabled interfaces
br-fw-admin 8000.640ac0d516d8 no eth0
br-mgmt 8000.64474cf31a9b no eth2
p_br-prv-0
br-storage 8000.6456e9078afc no eth4
qbr1ceb0108-7e 8000.da23070d75fb no qvb1ceb0108-7e
qbr39a97be3-88 8000.5aba96dbdc1d no qvb39a97be3-88
qbrb3dbdaaa-24 8000.362497c67f72 no qvbb3dbdaaa-24
As you can see, veth pair is absent for bridges br-int and qvb1ceb0108-7e. Bridge "qvb1ceb0108-7e" matches inaccessible VM.