Skip to content

Commit e1a104f

Browse files
Merge pull request #335 from tinkerbell/mergify/bp/v0.12/pr-334
2 parents db71be0 + be37ada commit e1a104f

File tree

2 files changed

+63
-3
lines changed

2 files changed

+63
-3
lines changed

internal/backend/kubernetes/backend.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,17 +186,17 @@ func toEC2Instance(hw tinkv1.Hardware) ec2.Instance {
186186
for _, ip := range hw.Spec.Metadata.Instance.Ips {
187187
// Public IPv4
188188
if ip.Family == 4 && ip.Public && i.Metadata.PublicIPv4 == "" {
189-
i.Metadata.PublicIPv4 = hw.Spec.Metadata.Instance.Ips[0].Address
189+
i.Metadata.PublicIPv4 = ip.Address
190190
}
191191

192192
// Private IPv4
193193
if ip.Family == 4 && !ip.Public && i.Metadata.LocalIPv4 == "" {
194-
i.Metadata.LocalIPv4 = hw.Spec.Metadata.Instance.Ips[0].Address
194+
i.Metadata.LocalIPv4 = ip.Address
195195
}
196196

197197
// Public IPv6
198198
if ip.Family == 6 && i.Metadata.PublicIPv6 == "" {
199-
i.Metadata.PublicIPv6 = hw.Spec.Metadata.Instance.Ips[0].Address
199+
i.Metadata.PublicIPv6 = ip.Address
200200
}
201201
}
202202
}

internal/backend/kubernetes/backend_test.go

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,66 @@ func TestGetEC2Instance(t *testing.T) {
251251
},
252252
},
253253
},
254+
{
255+
Name: "PublicThenPrivateIPv4s",
256+
Hardware: tinkv1.Hardware{
257+
Spec: tinkv1.HardwareSpec{
258+
Metadata: &tinkv1.HardwareMetadata{
259+
Instance: &tinkv1.MetadataInstance{
260+
Ips: []*tinkv1.MetadataInstanceIP{
261+
{
262+
Address: "10.10.10.10",
263+
Family: 4,
264+
Public: true,
265+
},
266+
{
267+
Address: "172.15.0.1",
268+
Family: 4,
269+
// Zero value is false but we want to be explicit.
270+
Public: false,
271+
},
272+
},
273+
},
274+
},
275+
},
276+
},
277+
ExpectedInstance: ec2.Instance{
278+
Metadata: ec2.Metadata{
279+
PublicIPv4: "10.10.10.10",
280+
LocalIPv4: "172.15.0.1",
281+
},
282+
},
283+
},
284+
{
285+
Name: "PrivateThenPublicIPv4s",
286+
Hardware: tinkv1.Hardware{
287+
Spec: tinkv1.HardwareSpec{
288+
Metadata: &tinkv1.HardwareMetadata{
289+
Instance: &tinkv1.MetadataInstance{
290+
Ips: []*tinkv1.MetadataInstanceIP{
291+
{
292+
Address: "10.10.10.10",
293+
Family: 4,
294+
// Zero value is false but we want to be explicit.
295+
Public: false,
296+
},
297+
{
298+
Address: "172.15.0.1",
299+
Family: 4,
300+
Public: true,
301+
},
302+
},
303+
},
304+
},
305+
},
306+
},
307+
ExpectedInstance: ec2.Instance{
308+
Metadata: ec2.Metadata{
309+
PublicIPv4: "172.15.0.1",
310+
LocalIPv4: "10.10.10.10",
311+
},
312+
},
313+
},
254314
{
255315
Name: "PublicIPv6",
256316
Hardware: tinkv1.Hardware{

0 commit comments

Comments
 (0)