@@ -144,6 +144,90 @@ func TestMetadataRetrieval(t *testing.T) {
144144 }, meta .NodeAddresses )
145145 })
146146
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+
147231 ipTests := []struct {
148232 name string
149233 inputIPv4s []string
@@ -226,7 +310,7 @@ func TestMetadataRetrieval(t *testing.T) {
226310 nil ,
227311 },
228312 {
229- "one private addresses , one existing internal IP set on the node" ,
313+ "one private address , one existing internal IP set on the node" ,
230314 []string {"192.168.121.42" },
231315 "" ,
232316 "" ,
@@ -329,7 +413,7 @@ func TestMetadataRetrieval(t *testing.T) {
329413 expectedInstance := linodego.Instance {Label : "expected-instance" , ID : 12345 , IPv4 : []* net.IP {& publicIP , & privateIP }}
330414
331415 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 ) {
333417 instances := newInstances (client )
334418 client .EXPECT ().ListInstances (gomock .Any (), nil ).Times (1 ).Return ([]linodego.Instance {{ID : 3456 , IPv4 : []* net.IP {& wrongIP }}, expectedInstance }, nil )
335419 node := v1.Node {ObjectMeta : metav1.ObjectMeta {Name : "test-node-1" }, Status : v1.NodeStatus {Addresses : test .nodeAddresses }}
0 commit comments