@@ -144,6 +144,90 @@ func TestMetadataRetrieval(t *testing.T) {
144
144
}, meta .NodeAddresses )
145
145
})
146
146
147
+ t .Run ("should return data when linode is found (by name) and addresses must be in order" , func (t * testing.T ) {
148
+ instances := newInstances (client )
149
+ id := 123
150
+ name := "mock-instance"
151
+ node := nodeWithName (name )
152
+ publicIPv4 := net .ParseIP ("45.76.101.25" )
153
+ privateIPv4 := net .ParseIP ("192.168.133.65" )
154
+ ipv6Addr := "2001::8a2e:370:7348"
155
+ linodeType := "g6-standard-1"
156
+ region := "us-east"
157
+
158
+ Options .VPCNames = "test"
159
+ vpcIDs ["test" ] = 1
160
+ Options .EnableRouteController = true
161
+
162
+ instance := linodego.Instance {
163
+ ID : id ,
164
+ Label : name ,
165
+ Type : linodeType ,
166
+ Region : region ,
167
+ IPv4 : []* net.IP {& publicIPv4 , & privateIPv4 },
168
+ IPv6 : ipv6Addr ,
169
+ }
170
+ vpcIP := "10.0.0.2"
171
+ addressRange1 := "10.192.0.0/24"
172
+ addressRange2 := "10.192.10.0/24"
173
+ routesInVPC := []linodego.VPCIP {
174
+ {
175
+ Address : & vpcIP ,
176
+ AddressRange : nil ,
177
+ VPCID : vpcIDs ["test" ],
178
+ NAT1To1 : nil ,
179
+ LinodeID : id ,
180
+ },
181
+ {
182
+ Address : nil ,
183
+ AddressRange : & addressRange1 ,
184
+ VPCID : vpcIDs ["test" ],
185
+ NAT1To1 : nil ,
186
+ LinodeID : id ,
187
+ },
188
+ {
189
+ Address : nil ,
190
+ AddressRange : & addressRange2 ,
191
+ VPCID : vpcIDs ["test" ],
192
+ NAT1To1 : nil ,
193
+ LinodeID : id ,
194
+ },
195
+ }
196
+
197
+ client .EXPECT ().ListInstances (gomock .Any (), nil ).Times (1 ).Return ([]linodego.Instance {instance }, nil )
198
+ client .EXPECT ().ListVPCIPAddresses (gomock .Any (), vpcIDs ["test" ], gomock .Any ()).Return (routesInVPC , nil )
199
+
200
+ meta , err := instances .InstanceMetadata (ctx , node )
201
+ assert .NoError (t , err )
202
+ assert .Equal (t , providerIDPrefix + strconv .Itoa (id ), meta .ProviderID )
203
+ assert .Equal (t , region , meta .Region )
204
+ assert .Equal (t , linodeType , meta .InstanceType )
205
+ assert .Equal (t , []v1.NodeAddress {
206
+ {
207
+ Type : v1 .NodeHostName ,
208
+ Address : name ,
209
+ },
210
+ {
211
+ Type : v1 .NodeInternalIP ,
212
+ Address : vpcIP ,
213
+ },
214
+ {
215
+ Type : v1 .NodeExternalIP ,
216
+ Address : publicIPv4 .String (),
217
+ },
218
+ {
219
+ Type : v1 .NodeInternalIP ,
220
+ Address : privateIPv4 .String (),
221
+ },
222
+ {
223
+ Type : v1 .NodeExternalIP ,
224
+ Address : ipv6Addr ,
225
+ },
226
+ }, meta .NodeAddresses )
227
+
228
+ Options .VPCNames = ""
229
+ })
230
+
147
231
ipTests := []struct {
148
232
name string
149
233
inputIPv4s []string
@@ -226,7 +310,7 @@ func TestMetadataRetrieval(t *testing.T) {
226
310
nil ,
227
311
},
228
312
{
229
- "one private addresses , one existing internal IP set on the node" ,
313
+ "one private address , one existing internal IP set on the node" ,
230
314
[]string {"192.168.121.42" },
231
315
"" ,
232
316
"" ,
@@ -329,7 +413,7 @@ func TestMetadataRetrieval(t *testing.T) {
329
413
expectedInstance := linodego.Instance {Label : "expected-instance" , ID : 12345 , IPv4 : []* net.IP {& publicIP , & privateIP }}
330
414
331
415
for _ , test := range getByIPTests {
332
- t .Run (fmt .Sprintf ("gets lindoe by IP - %s" , test .name ), func (t * testing.T ) {
416
+ t .Run (fmt .Sprintf ("gets linode by IP - %s" , test .name ), func (t * testing.T ) {
333
417
instances := newInstances (client )
334
418
client .EXPECT ().ListInstances (gomock .Any (), nil ).Times (1 ).Return ([]linodego.Instance {{ID : 3456 , IPv4 : []* net.IP {& wrongIP }}, expectedInstance }, nil )
335
419
node := v1.Node {ObjectMeta : metav1.ObjectMeta {Name : "test-node-1" }, Status : v1.NodeStatus {Addresses : test .nodeAddresses }}
0 commit comments