Thanks Wei, I've opened a proper issue for this, hope your fix gets applied.
https://github.com/apache/cloudstack/issues/3311 -- Sent from the Delta quadrant using Borg technology! Nux! www.nux.ro ----- Original Message ----- > From: "Wei ZHOU" <ustcweiz...@gmail.com> > To: "dev" <dev@cloudstack.apache.org> > Cc: "users" <us...@cloudstack.apache.org> > Sent: Wednesday, 1 May, 2019 21:52:06 > Subject: Re: Cloudstack-agent gets the local IP address exception > Hi Nux, > > It is because NetworkInterface.getInterfaceAddresses() returns the ips in > reverse order. > For example, "ip addr show dev eth0" shows the following ips > inet X.X.X.X > inet secondary Y.Y.Y.Y > inet6 Z:Z:Z:Z:Z:Z > > Then NetworkInterface.getInterfaceAddresses returns > Z:Z:Z:Z:Z:Z > Y.Y.Y.Y > X.X.X.X > > The following patch should work as you expect. > > ``` > diff --git a/utils/src/main/java/com/cloud/utils/net/NetUtils.java > b/utils/src/main/java/com/cloud/utils/net/NetUtils.java > index afe73f1..afb0ce6 100644 > --- a/utils/src/main/java/com/cloud/utils/net/NetUtils.java > +++ b/utils/src/main/java/com/cloud/utils/net/NetUtils.java > @@ -32,6 +32,7 @@ import java.net.SocketException; > import java.net.URI; > import java.net.UnknownHostException; > import java.util.ArrayList; > +import java.util.Collections; > import java.util.Formatter; > import java.util.List; > import java.util.Random; > @@ -394,10 +395,11 @@ public class NetUtils { > } > > public static String[] getNetworkParams(final NetworkInterface nic) { > - final List<InterfaceAddress> addrs = nic.getInterfaceAddresses(); > + List<InterfaceAddress> addrs = nic.getInterfaceAddresses(); > if (addrs == null || addrs.size() == 0) { > return null; > } > + Collections.reverse(addrs); > InterfaceAddress addr = null; > for (final InterfaceAddress iaddr : addrs) { > final InetAddress inet = iaddr.getAddress(); > ``` > > > -Wei > > > > Nux! <n...@li.nux.ro> 于2019年5月1日周三 下午4:00写道: > >> I ran into a similar problem when I tried to allocate an additional IP on >> the agent machine (for other purposes), the hypervisor would then show up >> in the UI with this new IP and in "Alert" state. >> >> I solved the problem by moving the IP out of br0 and on to the loopback >> interface. >> >> -- >> Sent from the Delta quadrant using Borg technology! >> >> Nux! >> www.nux.ro >> >> ----- Original Message ----- >> > From: "li jerry" <div...@hotmail.com> >> > To: "users" <us...@cloudstack.apache.org>, "dev" < >> dev@cloudstack.apache.org> >> > Sent: Monday, 22 April, 2019 14:36:51 >> > Subject: Cloudstack-agent gets the local IP address exception >> >> > HI All >> > >> > >> > my kvm host [ip:10.226.16.11] virtualized a vip[10.226.16.10] via >> keepalived. >> > >> > After I started the cloudstack-agent, I got vip[10.226.16.10] and I >> couldn't get >> > the correct IP [10.226.16.11]; >> > >> > Can I have any way to get the cloudstack agent to get the correct IP >> address? >> > >> > >> > >> > Cloudstack 4.11.2 >> > CentOS 7.5 >> > >> > >> > >> > br2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP >> group >> > default qlen 1000 >> > link/ether ac:1f:6b:ba:96:ea brd ff:ff:ff:ff:ff:ff >> > inet 10.226.16.11/24 brd 10.226.16.255 scope global noprefixroute br2 >> > valid_lft forever preferred_lft forever >> > inet 10.226.16.10/24 scope global secondary br2 >> > valid_lft forever preferred_lft forever >> > inet6 fe80::1456:f9ff:fe06:6228/64 scope link >> > valid_lft forever preferred_lft forever