Skip to content

Commit 6762628

Browse files
committed
Init container changes for getting all the primary attached interfaces
1 parent 0e8092b commit 6762628

24 files changed

+2244
-1497
lines changed

cmd/routed-eni-cni-plugin/cni.go

+161-73
Large diffs are not rendered by default.

cmd/routed-eni-cni-plugin/cni_test.go

+75-60
Original file line numberDiff line numberDiff line change
@@ -103,15 +103,16 @@ func TestCmdAdd(t *testing.T) {
103103
enforceNpReply := &rpc.EnforceNpReply{Success: true}
104104
mockNP.EXPECT().EnforceNpToPod(gomock.Any(), gomock.Any()).Return(enforceNpReply, nil).Times(1)
105105

106-
addNetworkReply := &rpc.AddNetworkReply{Success: true, IPv4Addr: ipAddr, DeviceNumber: devNum, NetworkPolicyMode: "none"}
106+
addrs := []*rpc.IPAddress{&rpc.IPAddress{
107+
IPv4Addr: ipAddr,
108+
DeviceNumber: devNum,
109+
RouteTableId: devNum + 1,
110+
}}
111+
112+
addNetworkReply := &rpc.AddNetworkReply{Success: true, IPAddress: addrs, NetworkPolicyMode: "none"}
107113
mockC.EXPECT().AddNetwork(gomock.Any(), gomock.Any()).Return(addNetworkReply, nil)
108114

109-
v4Addr := &net.IPNet{
110-
IP: net.ParseIP(addNetworkReply.IPv4Addr),
111-
Mask: net.IPv4Mask(255, 255, 255, 255),
112-
}
113-
mocksNetwork.EXPECT().SetupPodNetwork(gomock.Any(), cmdArgs.IfName, cmdArgs.Netns,
114-
v4Addr, nil, int(addNetworkReply.DeviceNumber), gomock.Any(), gomock.Any()).Return(nil)
115+
mocksNetwork.EXPECT().SetupPodNetwork(gomock.Any(), cmdArgs.Netns, gomock.Any(), gomock.Any()).Return(nil)
115116

116117
mocksTypes.EXPECT().PrintResult(gomock.Any(), gomock.Any()).Return(nil).Times(1)
117118

@@ -144,18 +145,19 @@ func TestCmdAddWithNPenabled(t *testing.T) {
144145
mockNP := mock_rpc.NewMockNPBackendClient(ctrl)
145146
mocksRPC.EXPECT().NewNPBackendClient(npConn).Return(mockNP)
146147

147-
addNetworkReply := &rpc.AddNetworkReply{Success: true, IPv4Addr: ipAddr, DeviceNumber: devNum, NetworkPolicyMode: "strict"}
148+
addrs := []*rpc.IPAddress{&rpc.IPAddress{
149+
IPv4Addr: ipAddr,
150+
DeviceNumber: devNum,
151+
RouteTableId: devNum + 1,
152+
}}
153+
154+
addNetworkReply := &rpc.AddNetworkReply{Success: true, IPAddress: addrs, NetworkPolicyMode: "strict"}
148155
mockC.EXPECT().AddNetwork(gomock.Any(), gomock.Any()).Return(addNetworkReply, nil)
149156

150157
enforceNpReply := &rpc.EnforceNpReply{Success: true}
151158
mockNP.EXPECT().EnforceNpToPod(gomock.Any(), gomock.Any()).Return(enforceNpReply, nil)
152159

153-
v4Addr := &net.IPNet{
154-
IP: net.ParseIP(addNetworkReply.IPv4Addr),
155-
Mask: net.IPv4Mask(255, 255, 255, 255),
156-
}
157-
mocksNetwork.EXPECT().SetupPodNetwork(gomock.Any(), cmdArgs.IfName, cmdArgs.Netns,
158-
v4Addr, nil, int(addNetworkReply.DeviceNumber), gomock.Any(), gomock.Any()).Return(nil)
160+
mocksNetwork.EXPECT().SetupPodNetwork(gomock.Any(), cmdArgs.Netns, gomock.Any(), gomock.Any()).Return(nil)
159161

160162
mocksTypes.EXPECT().PrintResult(gomock.Any(), gomock.Any()).Return(nil)
161163

@@ -188,18 +190,19 @@ func TestCmdAddWithNPenabledWithErr(t *testing.T) {
188190
mockNP := mock_rpc.NewMockNPBackendClient(ctrl)
189191
mocksRPC.EXPECT().NewNPBackendClient(npConn).Return(mockNP)
190192

191-
addNetworkReply := &rpc.AddNetworkReply{Success: true, IPv4Addr: ipAddr, DeviceNumber: devNum, NetworkPolicyMode: "strict"}
193+
addrs := []*rpc.IPAddress{&rpc.IPAddress{
194+
IPv4Addr: ipAddr,
195+
DeviceNumber: devNum,
196+
RouteTableId: devNum + 1,
197+
}}
198+
199+
addNetworkReply := &rpc.AddNetworkReply{Success: true, IPAddress: addrs, NetworkPolicyMode: "strict"}
192200
mockC.EXPECT().AddNetwork(gomock.Any(), gomock.Any()).Return(addNetworkReply, nil)
193201

194202
enforceNpReply := &rpc.EnforceNpReply{Success: false}
195203
mockNP.EXPECT().EnforceNpToPod(gomock.Any(), gomock.Any()).Return(enforceNpReply, errors.New("Error on EnforceNpReply"))
196204

197-
v4Addr := &net.IPNet{
198-
IP: net.ParseIP(addNetworkReply.IPv4Addr),
199-
Mask: net.IPv4Mask(255, 255, 255, 255),
200-
}
201-
mocksNetwork.EXPECT().SetupPodNetwork(gomock.Any(), cmdArgs.IfName, cmdArgs.Netns,
202-
v4Addr, nil, int(addNetworkReply.DeviceNumber), gomock.Any(), gomock.Any()).Return(nil)
205+
mocksNetwork.EXPECT().SetupPodNetwork(gomock.Any(), cmdArgs.Netns, gomock.Any(), gomock.Any()).Return(nil)
203206

204207
err := add(cmdArgs, mocksTypes, mocksGRPC, mocksRPC, mocksNetwork)
205208
assert.Error(t, err)
@@ -224,7 +227,13 @@ func TestCmdAddNetworkErr(t *testing.T) {
224227
mockC := mock_rpc.NewMockCNIBackendClient(ctrl)
225228
mocksRPC.EXPECT().NewCNIBackendClient(conn).Return(mockC)
226229

227-
addNetworkReply := &rpc.AddNetworkReply{Success: false, IPv4Addr: ipAddr, DeviceNumber: devNum, NetworkPolicyMode: "none"}
230+
addrs := []*rpc.IPAddress{&rpc.IPAddress{
231+
IPv4Addr: ipAddr,
232+
DeviceNumber: devNum,
233+
RouteTableId: devNum + 1,
234+
}}
235+
236+
addNetworkReply := &rpc.AddNetworkReply{Success: false, IPAddress: addrs, NetworkPolicyMode: "none"}
228237
mockC.EXPECT().AddNetwork(gomock.Any(), gomock.Any()).Return(addNetworkReply, errors.New("Error on AddNetworkReply"))
229238

230239
err := add(cmdArgs, mocksTypes, mocksGRPC, mocksRPC, mocksNetwork)
@@ -251,19 +260,18 @@ func TestCmdAddErrSetupPodNetwork(t *testing.T) {
251260
mockC := mock_rpc.NewMockCNIBackendClient(ctrl)
252261
mocksRPC.EXPECT().NewCNIBackendClient(conn).Return(mockC)
253262

254-
addNetworkReply := &rpc.AddNetworkReply{Success: true, IPv4Addr: ipAddr, DeviceNumber: devNum, NetworkPolicyMode: "none"}
263+
addrs := []*rpc.IPAddress{&rpc.IPAddress{
264+
IPv4Addr: ipAddr,
265+
DeviceNumber: devNum,
266+
RouteTableId: devNum + 1,
267+
}}
268+
addNetworkReply := &rpc.AddNetworkReply{Success: true, IPAddress: addrs, NetworkPolicyMode: "none"}
255269
mockC.EXPECT().AddNetwork(gomock.Any(), gomock.Any()).Return(addNetworkReply, nil)
256270

257-
addr := &net.IPNet{
258-
IP: net.ParseIP(addNetworkReply.IPv4Addr),
259-
Mask: net.IPv4Mask(255, 255, 255, 255),
260-
}
261-
262-
mocksNetwork.EXPECT().SetupPodNetwork(gomock.Any(), cmdArgs.IfName, cmdArgs.Netns,
263-
addr, nil, int(addNetworkReply.DeviceNumber), gomock.Any(), gomock.Any()).Return(errors.New("error on SetupPodNetwork"))
271+
mocksNetwork.EXPECT().SetupPodNetwork(gomock.Any(), cmdArgs.Netns, gomock.Any(), gomock.Any()).Return(errors.New("error on SetupPodNetwork"))
264272

265273
// when SetupPodNetwork fails, expect to return IP back to datastore
266-
delNetworkReply := &rpc.DelNetworkReply{Success: true, IPv4Addr: ipAddr, DeviceNumber: devNum}
274+
delNetworkReply := &rpc.DelNetworkReply{Success: true, IPAddress: addrs}
267275
mockC.EXPECT().DelNetwork(gomock.Any(), gomock.Any()).Return(delNetworkReply, nil)
268276

269277
err := add(cmdArgs, mocksTypes, mocksGRPC, mocksRPC, mocksNetwork)
@@ -296,18 +304,19 @@ func TestCmdDel(t *testing.T) {
296304
mockNP := mock_rpc.NewMockNPBackendClient(ctrl)
297305
mocksRPC.EXPECT().NewNPBackendClient(npConn).Return(mockNP)
298306

299-
delNetworkReply := &rpc.DelNetworkReply{Success: true, IPv4Addr: ipAddr, DeviceNumber: devNum}
307+
addrs := []*rpc.IPAddress{&rpc.IPAddress{
308+
IPv4Addr: ipAddr,
309+
DeviceNumber: devNum,
310+
RouteTableId: devNum + 1,
311+
}}
312+
313+
delNetworkReply := &rpc.DelNetworkReply{Success: true, IPAddress: addrs}
300314
mockC.EXPECT().DelNetwork(gomock.Any(), gomock.Any()).Return(delNetworkReply, nil)
301315

302316
deleteNpReply := &rpc.DeleteNpReply{Success: true}
303317
mockNP.EXPECT().DeletePodNp(gomock.Any(), gomock.Any()).Return(deleteNpReply, nil)
304318

305-
addr := &net.IPNet{
306-
IP: net.ParseIP(delNetworkReply.IPv4Addr),
307-
Mask: net.IPv4Mask(255, 255, 255, 255),
308-
}
309-
310-
mocksNetwork.EXPECT().TeardownPodNetwork(addr, int(delNetworkReply.DeviceNumber), gomock.Any()).Return(nil)
319+
mocksNetwork.EXPECT().TeardownPodNetwork(gomock.Any(), gomock.Any()).Return(nil)
311320

312321
err := del(cmdArgs, mocksTypes, mocksGRPC, mocksRPC, mocksNetwork)
313322
assert.Nil(t, err)
@@ -332,7 +341,13 @@ func TestCmdDelErrDelNetwork(t *testing.T) {
332341
mockC := mock_rpc.NewMockCNIBackendClient(ctrl)
333342
mocksRPC.EXPECT().NewCNIBackendClient(conn).Return(mockC)
334343

335-
delNetworkReply := &rpc.DelNetworkReply{Success: false, IPv4Addr: ipAddr, DeviceNumber: devNum}
344+
addrs := []*rpc.IPAddress{&rpc.IPAddress{
345+
IPv4Addr: ipAddr,
346+
DeviceNumber: devNum,
347+
RouteTableId: devNum + 1,
348+
}}
349+
350+
delNetworkReply := &rpc.DelNetworkReply{Success: false, IPAddress: addrs}
336351

337352
mockC.EXPECT().DelNetwork(gomock.Any(), gomock.Any()).Return(delNetworkReply, errors.New("error on DelNetwork"))
338353

@@ -359,17 +374,16 @@ func TestCmdDelErrTeardown(t *testing.T) {
359374
mocksGRPC.EXPECT().Dial(gomock.Any(), gomock.Any()).Return(conn, nil)
360375
mockC := mock_rpc.NewMockCNIBackendClient(ctrl)
361376
mocksRPC.EXPECT().NewCNIBackendClient(conn).Return(mockC)
362-
363-
delNetworkReply := &rpc.DelNetworkReply{Success: true, IPv4Addr: ipAddr, DeviceNumber: devNum}
377+
addrs := []*rpc.IPAddress{&rpc.IPAddress{
378+
IPv4Addr: ipAddr,
379+
DeviceNumber: devNum,
380+
RouteTableId: devNum + 1,
381+
}}
382+
delNetworkReply := &rpc.DelNetworkReply{Success: true, IPAddress: addrs}
364383

365384
mockC.EXPECT().DelNetwork(gomock.Any(), gomock.Any()).Return(delNetworkReply, nil)
366385

367-
addr := &net.IPNet{
368-
IP: net.ParseIP(delNetworkReply.IPv4Addr),
369-
Mask: net.IPv4Mask(255, 255, 255, 255),
370-
}
371-
372-
mocksNetwork.EXPECT().TeardownPodNetwork(addr, int(delNetworkReply.DeviceNumber), gomock.Any()).Return(errors.New("error on teardown"))
386+
mocksNetwork.EXPECT().TeardownPodNetwork(gomock.Any(), gomock.Any()).Return(errors.New("error on teardown"))
373387

374388
err := del(cmdArgs, mocksTypes, mocksGRPC, mocksRPC, mocksNetwork)
375389
assert.Error(t, err)
@@ -400,18 +414,17 @@ func TestCmdAddForPodENINetwork(t *testing.T) {
400414
mockNP := mock_rpc.NewMockNPBackendClient(ctrl)
401415
mocksRPC.EXPECT().NewNPBackendClient(npConn).Return(mockNP)
402416

403-
addNetworkReply := &rpc.AddNetworkReply{Success: true, IPv4Addr: ipAddr, PodENISubnetGW: "10.0.0.1", PodVlanId: 1,
417+
addrs := []*rpc.IPAddress{&rpc.IPAddress{
418+
IPv4Addr: ipAddr}}
419+
420+
addNetworkReply := &rpc.AddNetworkReply{Success: true, IPAddress: addrs, PodENISubnetGW: "10.0.0.1", PodVlanId: 1,
404421
PodENIMAC: "eniHardwareAddr", ParentIfIndex: 2, NetworkPolicyMode: "none"}
405422
mockC.EXPECT().AddNetwork(gomock.Any(), gomock.Any()).Return(addNetworkReply, nil)
406423

407424
enforceNpReply := &rpc.EnforceNpReply{Success: true}
408425
mockNP.EXPECT().EnforceNpToPod(gomock.Any(), gomock.Any()).Return(enforceNpReply, nil)
409426

410-
addr := &net.IPNet{
411-
IP: net.ParseIP(addNetworkReply.IPv4Addr),
412-
Mask: net.IPv4Mask(255, 255, 255, 255),
413-
}
414-
mocksNetwork.EXPECT().SetupBranchENIPodNetwork(gomock.Any(), cmdArgs.IfName, cmdArgs.Netns, addr, nil, 1, "eniHardwareAddr",
427+
mocksNetwork.EXPECT().SetupBranchENIPodNetwork(gomock.Any(), cmdArgs.Netns, 1, "eniHardwareAddr",
415428
"10.0.0.1", 2, gomock.Any(), sgpp.EnforcingModeStrict, gomock.Any()).Return(nil)
416429

417430
mocksTypes.EXPECT().PrintResult(gomock.Any(), gomock.Any()).Return(nil)
@@ -446,17 +459,19 @@ func TestCmdDelForPodENINetwork(t *testing.T) {
446459
mockNP := mock_rpc.NewMockNPBackendClient(ctrl)
447460
mocksRPC.EXPECT().NewNPBackendClient(npConn).Return(mockNP)
448461

449-
delNetworkReply := &rpc.DelNetworkReply{Success: true, IPv4Addr: ipAddr, PodVlanId: 1}
462+
addrs := []*rpc.IPAddress{&rpc.IPAddress{
463+
IPv4Addr: ipAddr,
464+
DeviceNumber: devNum,
465+
RouteTableId: devNum + 1,
466+
}}
467+
468+
delNetworkReply := &rpc.DelNetworkReply{Success: true, IPAddress: addrs, PodVlanId: 1}
450469
mockC.EXPECT().DelNetwork(gomock.Any(), gomock.Any()).Return(delNetworkReply, nil)
451470

452471
deleteNpReply := &rpc.DeleteNpReply{Success: true}
453472
mockNP.EXPECT().DeletePodNp(gomock.Any(), gomock.Any()).Return(deleteNpReply, nil)
454473

455-
addr := &net.IPNet{
456-
IP: net.ParseIP(delNetworkReply.IPv4Addr),
457-
Mask: net.IPv4Mask(255, 255, 255, 255),
458-
}
459-
mocksNetwork.EXPECT().TeardownBranchENIPodNetwork(addr, 1, sgpp.EnforcingModeStrict, gomock.Any()).Return(nil)
474+
mocksNetwork.EXPECT().TeardownBranchENIPodNetwork(gomock.Any(), 1, sgpp.EnforcingModeStrict, gomock.Any()).Return(nil)
460475

461476
err := del(cmdArgs, mocksTypes, mocksGRPC, mocksRPC, mocksNetwork)
462477
assert.Nil(t, err)
@@ -1152,7 +1167,7 @@ func Test_teardownPodNetworkWithPrevResult(t *testing.T) {
11521167

11531168
driverClient := mock_driver.NewMockNetworkAPIs(ctrl)
11541169
for _, call := range tt.fields.teardownPodNetworkCalls {
1155-
driverClient.EXPECT().TeardownPodNetwork(call.containerAddr, call.deviceNumber, gomock.Any()).Return(call.err)
1170+
driverClient.EXPECT().TeardownPodNetwork(gomock.Any(), gomock.Any()).Return(call.err)
11561171
}
11571172

11581173
handled := teardownPodNetworkWithPrevResult(driverClient, tt.args.conf, tt.args.k8sArgs, tt.args.contVethName, testLogger)

0 commit comments

Comments
 (0)