I think the source code of 4.9 will be more or less the same.
I missed another bit of code. Lines 1087 – 1094. “if (_pifs.get("private")
== null)”.
It tries to look for a file at “/sys/class/net/" + _guestBridgeName. If it
exist it executes “_pifs.put("private", _guestBridgeName)”. Does that exist
for you?
There is also another piece of code at 1059-1071 that may also be used to
get the private PIF name. For that, it lists the files from
“sys/devices/virtual/net”.
Can you list directories “/sys/class/net/" and “/sys/devices/virtual/net”?
I will now check the source code for ACS 4.2, and see if it is the same.
On Thu, Oct 20, 2016 at 12:01 PM, Cloud List <cloud-l...@sg.or.id> wrote:
Hi Rafael,
Thanks for your reply.
Here's the output of the command:
root@test-kvm-03:/var/log/cloudstack/agent# ovs-vsctl list-br | sed
'{:q;N;s/\\n/%/g;t q}'
The program 'ovs-vsctl' is currently not installed. You can install it
by
typing:
apt-get install openvswitch-switch
I believe the command is only applicable if we are using OpenVSwitch. We
are using the normal Ubuntu network bridges rather than using
OpenVSwitch.
Furthermore, we are trying to roll back to 4.2 and this issue happens
when
I want to start the agent after I downgraded the agent to 4.2. Shouldn't
we
be checking the 4.2 source code instead?
Looking forward to your reply, thank you.
Cheers.
On Thu, Oct 20, 2016 at 8:38 PM, Rafael Weingärtner <
rafaelweingart...@gmail.com> wrote:
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 <cloud-l...@sg.or.id>
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
--
Rafael Weingärtner