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

Reply via email to