Hi, Anonymous fellow ;)
Let’s see if I can help you a little bit. I am checking the ACS 4.9 source
code.
The error is thrown at line 896 of class
“com.cloud.hypervisor.kvm.resource.LibvirtComputingResource”.
The condition that causes the error is “_pifs.get("private") == null”.
“_pifs” if a map. The key “private” is added to the map at line 1124, if
condition “_guestBridgeName != null && bridge.equals(_guestBridgeName)” is
met.
The variable “_guestBridgeName” is a String that can receive the value of
“guest.network.device” parameter or “_privBridgeName” variable. This
process happens at lines 752-755. The process of assigning a value to
“_privBridgeName” happens at lines 747-750. The default value for
“_privBridgeName” is “cloudbr1”. The default can be overridden by
“private.network.device” parameter.
Having detailed the parameter. Let's see how ACS gets the “bridge” value.
It gets that value from code at line 1113 “cmdout.split("%")”. The variable
“cmdout” contains the output of the following OS command: “ovs-vsctl
list-br | sed '{:q;N;s/\\n/%/g;t q}'”.
Can you run the command and check its output?
On Thu, Oct 20, 2016 at 8:49 AM, Cloud List <[email protected]> wrote:
> Hi,
>
> We are using ACS version 4.2 / 4.9 on our test environment. We are using
> Ubuntu 12.04 as the operating system and KVM as the hypervisor.
>
> We are trying to simulate an upgrade from ACS 4.2 to 4.9 and roll-back from
> 4.9 to 4.2 on our test environment. The upgrade went smooth, and the
> roll-back went well as well except when we need to start the agent after
> downgrading the agent.
>
> After uninstalling cloudstack-agent version 4.9 and installing back
> cloudstack-agent version 4.2, I am not able to start the agent with below
> error messages:
>
> ====
> 2016-10-20 17:32:28,187 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/
> cloud0/bridge
> 2016-10-20 17:32:28,187 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) Found bridge cloud0
> 2016-10-20 17:32:28,188 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/lo/bridge
> 2016-10-20 17:32:28,188 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file
> /sys/devices/virtual/net/cloudbr1/bridge
> 2016-10-20 17:32:28,188 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) Found bridge cloudbr1
> 2016-10-20 17:32:28,188 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet4/bridge
> 2016-10-20 17:32:28,188 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet5/bridge
> 2016-10-20 17:32:28,188 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet6/bridge
> 2016-10-20 17:32:28,188 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet7/bridge
> 2016-10-20 17:32:28,188 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet8/bridge
> 2016-10-20 17:32:28,189 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet9/bridge
> 2016-10-20 17:32:28,189 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet0/bridge
> 2016-10-20 17:32:28,189 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet1/bridge
> 2016-10-20 17:32:28,189 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet2/bridge
> 2016-10-20 17:32:28,189 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet3/bridge
> 2016-10-20 17:32:28,189 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/
> virbr0/bridge
> 2016-10-20 17:32:28,189 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) Found bridge virbr0
> 2016-10-20 17:32:28,189 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/
> vnet11/bridge
> 2016-10-20 17:32:28,190 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/
> vnet12/bridge
> 2016-10-20 17:32:28,190 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/
> vnet13/bridge
> 2016-10-20 17:32:28,190 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/
> vnet14/bridge
> 2016-10-20 17:32:28,190 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/
> vnet10/bridge
> 2016-10-20 17:32:28,190 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking for pif for bridge cloud0
> 2016-10-20 17:32:28,190 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) matchPifFileInDirectory: file name 'vnet1'
> 2016-10-20 17:32:28,191 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) matchPifFileInDirectory: file name 'vnet2'
> 2016-10-20 17:32:28,191 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) matchPifFileInDirectory: file name 'vnet5'
> 2016-10-20 17:32:28,191 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) failing to get physical interface from bridge cloud0,
> did not find an eth*, bond*, vlan*, em*, or p*p* in
> /sys/devices/virtual/net/cloud0/brif
> 2016-10-20 17:32:28,191 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking for pif for bridge cloudbr1
> 2016-10-20 17:32:28,191 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) matchPifFileInDirectory: file name 'eth1'
> 2016-10-20 17:32:28,192 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking for pif for bridge virbr0
> 2016-10-20 17:32:28,192 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) failing to get physical interface from bridge virbr0,
> did not find an eth*, bond*, vlan*, em*, or p*p* in
> /sys/devices/virtual/net/virbr0/brif
> 2016-10-20 17:32:28,192 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) done looking for pifs, no more bridges
> 2016-10-20 17:32:28,192 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) Failed to get private nic name
> 2016-10-20 17:32:28,192 ERROR [cloud.agent.AgentShell] (main:null) (logid:)
> Unable to start agent: Failed to get private nic name
> ====
>
> Below is the result of brctl show and the content of
> /etc/network/interfaces:
>
> ====
> root@test-kvm-03:/var/log/cloudstack/agent# brctl show
> bridge name bridge id STP enabled interfaces
> cloud0 8000.fe00a9fe00f8 no vnet1
> vnet2
> vnet5
> cloudbr1 8000.d067e5ec82c0 no eth1
> vnet0
> vnet10
> vnet11
> vnet12
> vnet13
> vnet14
> vnet3
> vnet4
> vnet6
> vnet7
> vnet8
> vnet9
> virbr0 8000.000000000000 yes
> ====
>
> /etc/network/interfaces:
>
> ====
> # The loopback network interface
> auto lo
> iface lo inet loopback
>
> auto eth1
> #iface eth1 inet static
> iface eth1 inet manual
>
> auto cloudbr1
> iface cloudbr1 inet static
> bridge_ports eth1
> address 192.168.0.201
> netmask 255.255.255.0
> network 192.168.0.0
> broadcast 192.168.0.255
> gateway 192.168.0.1
> dns-nameservers 8.8.8.8 8.8.4.4
> dns-search xxxxx.com
>
> auto cloudbr1:0
> iface cloudbr1:0 inet static
> address 192.168.3.201
> netmask 255.255.255.0
> network 192.168.3.0
> broadcast 192.168.3.255
> ====
>
> It seems that the error messages are complaining about no physical
> interface being added into cloud0 and virbr0 bridges. I tried to add eth1,
> cloudbr1 into the bridges but it didn't work. Deleting the cloud0 and
> virbr0 bridges doesn't help either, agent is still complaining about cannot
> find "pifs":
>
> ====
> 2016-10-20 18:00:48,331 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/lo/bridge
> 2016-10-20 18:00:48,332 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file
> /sys/devices/virtual/net/cloudbr1/bridge
> 2016-10-20 18:00:48,332 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) Found bridge cloudbr1
> 2016-10-20 18:00:48,332 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet4/bridge
> 2016-10-20 18:00:48,332 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet5/bridge
> 2016-10-20 18:00:48,332 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet6/bridge
> 2016-10-20 18:00:48,332 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet7/bridge
> 2016-10-20 18:00:48,332 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet8/bridge
> 2016-10-20 18:00:48,332 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet9/bridge
> 2016-10-20 18:00:48,333 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet0/bridge
> 2016-10-20 18:00:48,333 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet1/bridge
> 2016-10-20 18:00:48,333 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet2/bridge
> 2016-10-20 18:00:48,333 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/vnet3/bridge
> 2016-10-20 18:00:48,333 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/
> vnet11/bridge
> 2016-10-20 18:00:48,333 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/
> vnet12/bridge
> 2016-10-20 18:00:48,333 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/
> vnet13/bridge
> 2016-10-20 18:00:48,333 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/
> vnet14/bridge
> 2016-10-20 18:00:48,334 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking in file /sys/devices/virtual/net/
> vnet10/bridge
> 2016-10-20 18:00:48,334 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) looking for pif for bridge cloudbr1
> 2016-10-20 18:00:48,334 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) matchPifFileInDirectory: file name 'eth1'
> 2016-10-20 18:00:48,334 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) done looking for pifs, no more bridges
> 2016-10-20 18:00:48,334 DEBUG [kvm.resource.LibvirtComputingResource]
> (main:null) (logid:) Failed to get private nic name
> 2016-10-20 18:00:48,334 ERROR [cloud.agent.AgentShell] (main:null) (logid:)
> Unable to start agent: Failed to get private nic name
> ====
>
> I understand that the required bridge information is supposed to be added
> by CloudStack during the time when the host is added. Is there a way how I
> can add the bridge information again manually without having to delete and
> re-add the host into CloudStack? The reason is because we want to keep the
> VMs running during the downgrade, deleting and re-adding the host into
> CloudStack will shutdown the VMs.
>
> Any advice is greatly appreciated.
>
> Thank you.
>
> -ip-
>
--
Rafael Weingärtner