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"
> To: "dev"
> Cc: "users"
> 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 addrs = nic.getInterfaceAddresses();
> +List 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! 于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"
>> > To: "users" , "dev" <
>> d...@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: 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