Skip to content

Commit b122379

Browse files
committed
Add openstackmachine.status.addresses value
1 parent 89b3519 commit b122379

File tree

2 files changed

+22
-14
lines changed

2 files changed

+22
-14
lines changed

controllers/openstackmachine_controller.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,12 @@ func (r *OpenStackMachineReconciler) reconcileNormal(ctx context.Context, logger
311311

312312
openStackMachine.Status.InstanceState = &instance.State
313313

314+
address := []corev1.NodeAddress{{Type: corev1.NodeInternalIP, Address: instance.IP}}
315+
if instance.FloatingIP != "" {
316+
address = append(address, []corev1.NodeAddress{{Type: corev1.NodeExternalIP, Address: instance.FloatingIP}}...)
317+
}
318+
openStackMachine.Status.Addresses = address
319+
314320
// TODO(sbueringer) From CAPA: TODO(vincepri): Remove this annotation when clusterctl is no longer relevant.
315321
if openStackMachine.Annotations == nil {
316322
openStackMachine.Annotations = map[string]string{}

pkg/cloud/services/compute/instance.go

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -273,55 +273,57 @@ func serverToInstance(v *servers.Server) (*infrav1.Instance, error) {
273273
SSHKeyName: v.KeyName,
274274
State: infrav1.InstanceState(v.Status),
275275
}
276-
ip, err := getIPFromInstance(v)
276+
addrMap, err := getIPFromInstance(v)
277277
if err != nil {
278278
return i, err
279279
}
280-
i.IP = ip
280+
i.IP = addrMap["internal"]
281+
if addrMap["floating"] != "" {
282+
i.FloatingIP = addrMap["floating"]
283+
}
281284
return i, nil
282285
}
283286

284-
func getIPFromInstance(v *servers.Server) (string, error) {
287+
func getIPFromInstance(v *servers.Server) (map[string]string, error) {
288+
addrMap := make(map[string]string)
285289
if v.AccessIPv4 != "" && net.ParseIP(v.AccessIPv4) != nil {
286-
return v.AccessIPv4, nil
290+
addrMap["internal"] = v.AccessIPv4
291+
return addrMap, nil
287292
}
288293
type networkInterface struct {
289294
Address string `json:"addr"`
290295
Version float64 `json:"version"`
291296
Type string `json:"OS-EXT-IPS:type"`
292297
}
293-
var addrList []string
294298

295299
for _, b := range v.Addresses {
296300
list, err := json.Marshal(b)
297301
if err != nil {
298-
return "", fmt.Errorf("extract IP from instance err: %v", err)
302+
return nil, fmt.Errorf("extract IP from instance err: %v", err)
299303
}
300304
var networks []interface{}
301305
err = json.Unmarshal(list, &networks)
302306
if err != nil {
303-
return "", fmt.Errorf("extract IP from instance err: %v", err)
307+
return nil, fmt.Errorf("extract IP from instance err: %v", err)
304308
}
305309
for _, network := range networks {
306310
var netInterface networkInterface
307311
b, _ := json.Marshal(network)
308312
err = json.Unmarshal(b, &netInterface)
309313
if err != nil {
310-
return "", fmt.Errorf("extract IP from instance err: %v", err)
314+
return nil, fmt.Errorf("extract IP from instance err: %v", err)
311315
}
312316
if netInterface.Version == 4.0 {
313317
if netInterface.Type == "floating" {
314-
return netInterface.Address, nil
318+
addrMap["floating"] = netInterface.Address
319+
} else {
320+
addrMap["internal"] = netInterface.Address
315321
}
316-
addrList = append(addrList, netInterface.Address)
317322
}
318323
}
319324
}
320-
if len(addrList) != 0 {
321-
return addrList[0], nil
322-
}
323325

324-
return "", fmt.Errorf("extract IP from instance err")
326+
return addrMap, nil
325327
}
326328

327329
// applyRootVolume sets a root volume if the root volume Size is not 0

0 commit comments

Comments
 (0)