@@ -150,16 +150,10 @@ func (is *InstanceStatus) NetworkStatus() (*InstanceNetworkStatus, error) {
150
150
return nil , fmt .Errorf ("error unmarshalling addresses for instance %s: %w" , is .ID (), err )
151
151
}
152
152
153
- var addresses []corev1.NodeAddress
153
+ var IPv4addresses , IPv6addresses []corev1.NodeAddress
154
154
for i := range interfaceList {
155
155
address := & interfaceList [i ]
156
156
157
- // Only consider IPv4
158
- if address .Version != 4 {
159
- is .logger .V (6 ).Info ("Ignoring IP address: only IPv4 is supported" , "version" , address .Version , "address" , address .Address )
160
- continue
161
- }
162
-
163
157
var addressType corev1.NodeAddressType
164
158
switch address .Type {
165
159
case "floating" :
@@ -170,14 +164,20 @@ func (is *InstanceStatus) NetworkStatus() (*InstanceNetworkStatus, error) {
170
164
is .logger .V (6 ).Info ("Ignoring address with unknown type" , "address" , address .Address , "type" , address .Type )
171
165
continue
172
166
}
173
-
174
- addresses = append (addresses , corev1.NodeAddress {
175
- Type : addressType ,
176
- Address : address .Address ,
177
- })
167
+ if address .Version == 4 {
168
+ IPv4addresses = append (IPv4addresses , corev1.NodeAddress {
169
+ Type : addressType ,
170
+ Address : address .Address ,
171
+ })
172
+ } else {
173
+ IPv6addresses = append (IPv6addresses , corev1.NodeAddress {
174
+ Type : addressType ,
175
+ Address : address .Address ,
176
+ })
177
+ }
178
178
}
179
-
180
- addressesByNetwork [networkName ] = addresses
179
+ // Maintain IPv4 addresses being first ones on Machine's status given there are operations, e.g. reconcile load-balancer member, that use the first address by network type
180
+ addressesByNetwork [networkName ] = append ( IPv4addresses , IPv6addresses ... )
181
181
}
182
182
183
183
return & InstanceNetworkStatus {addressesByNetwork }, nil
0 commit comments