[VOL-5458] - Multi NNI support in VGC

Change-Id: I4ed19bf43a5594109a16397da94c56cda87c69f0
Signed-off-by: Sridhar Ravindra <sridhar.ravindra@radisys.com>
diff --git a/internal/pkg/application/application_test.go b/internal/pkg/application/application_test.go
index 3372266..5eef192 100644
--- a/internal/pkg/application/application_test.go
+++ b/internal/pkg/application/application_test.go
@@ -740,7 +740,7 @@
 		SerialNum:                    "SDX6320033",
 		SouthBoundID:                 "68580342-6b3e-57cb-9ea4-06125594e330",
 		State:                        controller.DeviceStateDOWN,
-		NniPort:                      "",
+		NniPort:                      make([]string, 0),
 		icmpv6GroupAdded:             false,
 		IgmpDsFlowAppliedForMvlan:    make(map[uint16]bool),
 		ConfiguredVlanForDeviceFlows: util.NewConcurrentMap(),
@@ -1308,6 +1308,7 @@
 		ipAddress          string
 		uplinkPort         string
 		nniDhcpTrapID      uint16
+		nniPorts           []string
 	}
 	dvcConfg := &DeviceConfig{
 		SerialNumber:       "SDX6320031",
@@ -1351,7 +1352,7 @@
 			dbintf := mocks.NewMockDBIntf(gomock.NewController(t))
 			db = dbintf
 			dbintf.EXPECT().PutDeviceConfig(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
-			if err := va.AddDeviceConfig(tt.args.cntx, tt.args.serialNum, tt.args.hardwareIdentifier, tt.args.nasID, tt.args.ipAddress, tt.args.uplinkPort, tt.args.nniDhcpTrapID); (err != nil) != tt.wantErr {
+			if err := va.AddDeviceConfig(tt.args.cntx, tt.args.serialNum, tt.args.hardwareIdentifier, tt.args.nasID, tt.args.ipAddress, tt.args.uplinkPort, tt.args.nniDhcpTrapID, tt.args.nniPorts); (err != nil) != tt.wantErr {
 				t.Errorf("VoltApplication.AddDeviceConfig() error = %v, wantErr %v", err, tt.wantErr)
 			}
 		})
@@ -1758,7 +1759,7 @@
 		Name:           "49686e2d-618f-4e8e-bca0-442ab850a63a",
 		SerialNum:      "SDX6320031",
 		NniDhcpTrapVid: 123,
-		NniPort:        "16777216",
+		NniPort:        []string{"16777216"},
 		SouthBoundID:   "49686e2d-618f-4e8e-bca0-442ab850a63a123",
 	}
 	nbd := &NbDevice{
@@ -1827,7 +1828,7 @@
 		Name:           "49686e2d-618f-4e8e-bca0-442ab850a63a",
 		SerialNum:      "SDX6320031",
 		NniDhcpTrapVid: 123,
-		NniPort:        "16777216",
+		NniPort:        []string{"16777216"},
 		SouthBoundID:   "49686e2d-618f-4e8e-bca0-442ab850a63a123",
 	}
 	tests := []struct {
@@ -1883,7 +1884,7 @@
 		Name:           "49686e2d-618f-4e8e-bca0-442ab850a63a",
 		SerialNum:      "SDX6320031",
 		NniDhcpTrapVid: 123,
-		NniPort:        "16777216",
+		NniPort:        []string{"16777216"},
 		SouthBoundID:   "49686e2d-618f-4e8e-bca0-442ab850a63a123",
 	}
 	tests := []struct {
@@ -1935,7 +1936,7 @@
 		Name:           "SDX6320031",
 		SerialNum:      "SDX6320031",
 		NniDhcpTrapVid: 123,
-		NniPort:        "16777216",
+		NniPort:        []string{"16777216"},
 		SouthBoundID:   "49686e2d-618f-4e8e-bca0-442ab850a63a123",
 	}
 	tests := []struct {
@@ -2000,7 +2001,7 @@
 		Name:           "SDX6320031",
 		SerialNum:      "SDX6320031",
 		NniDhcpTrapVid: 123,
-		NniPort:        "16777216",
+		NniPort:        []string{"16777216"},
 		SouthBoundID:   "49686e2d-618f-4e8e-bca0-442ab850a63a",
 	}
 	nbd := &NbDevice{
@@ -2076,7 +2077,7 @@
 		Name:                 "SDX6320031",
 		SerialNum:            "SDX6320031",
 		NniDhcpTrapVid:       123,
-		NniPort:              "16777216",
+		NniPort:              []string{"16777216"},
 		SouthBoundID:         "49686e2d-618f-4e8e-bca0-442ab850a63a",
 		ActiveChannelsPerPon: sync.Map{},
 	}
@@ -2181,7 +2182,7 @@
 		Name:                 "SDX6320031",
 		SerialNum:            "SDX6320031",
 		NniDhcpTrapVid:       123,
-		NniPort:              "16777216",
+		NniPort:              []string{"16777216"},
 		SouthBoundID:         "49686e2d-618f-4e8e-bca0-442ab850a63a",
 		ActiveChannelsPerPon: sync.Map{},
 	}
@@ -2258,7 +2259,7 @@
 		Name:           "SDX6320031",
 		SerialNum:      "SDX6320031",
 		NniDhcpTrapVid: 123,
-		NniPort:        "16777216",
+		NniPort:        []string{"16777216"},
 		SouthBoundID:   "49686e2d-618f-4e8e-bca0-442ab850a63a",
 	}
 	tests := []struct {
@@ -2302,7 +2303,7 @@
 		Name:           "SDX6320031",
 		SerialNum:      "SDX6320031",
 		NniDhcpTrapVid: 123,
-		NniPort:        "16777216",
+		NniPort:        []string{"16777216"},
 		SouthBoundID:   "49686e2d-618f-4e8e-bca0-442ab850a63a",
 	}
 	tests := []struct {
@@ -2399,7 +2400,7 @@
 		Name:           "SDX6320031",
 		SerialNum:      "SDX6320031",
 		NniDhcpTrapVid: 123,
-		NniPort:        "16777216",
+		NniPort:        []string{"16777216"},
 		SouthBoundID:   "49686e2d-618f-4e8e-bca0-442ab850a63a",
 		Ports:          sync.Map{},
 	}
@@ -2546,7 +2547,7 @@
 		Name:           "SDX6320031",
 		SerialNum:      "SDX6320031",
 		NniDhcpTrapVid: 123,
-		NniPort:        "16777472",
+		NniPort:        []string{"16777216"},
 		SouthBoundID:   "49686e2d-618f-4e8e-bca0-442ab850a63a",
 		Ports:          sync.Map{},
 		VpvsBySvlan:    util.NewConcurrentMap(),
@@ -2606,6 +2607,7 @@
 			voltPortVnet.services.Store("SDX6320031-1_SDX6320031-1-4096-2310-4096-65", voltServ)
 			voltapp := GetApplication()
 			voltapp.DevicesDisc.Store("SDX6320031", voltDev)
+			voltapp.DevicesConfig.Store("SDX6320031", &DeviceConfig{UplinkPort: "16777216"})
 			dbintf := mocks.NewMockDBIntf(gomock.NewController(t))
 			db = dbintf
 			dbintf.EXPECT().PutVpv(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
@@ -2624,7 +2626,7 @@
 		Name:           "SDX6320031",
 		SerialNum:      "SDX6320031",
 		NniDhcpTrapVid: 123,
-		NniPort:        "16777472",
+		NniPort:        []string{"16777216"},
 		SouthBoundID:   "49686e2d-618f-4e8e-bca0-442ab850a63a",
 		Ports:          sync.Map{},
 		VpvsBySvlan:    util.NewConcurrentMap(),
@@ -3137,7 +3139,7 @@
 		Name:           "49686e2d-618f-4e8e-bca0",
 		SerialNum:      "SDX6320031",
 		NniDhcpTrapVid: 123,
-		NniPort:        "16777472",
+		NniPort:        []string{"16777216"},
 		SouthBoundID:   "49686e2d-618f-4e8e-bca0-442ab850a63a",
 		Ports:          sync.Map{},
 		VpvsBySvlan:    util.NewConcurrentMap(),
@@ -3604,7 +3606,7 @@
 		SerialNum:                 "SDX6320031",
 		IgmpDsFlowAppliedForMvlan: mblan,
 		Ports:                     sync.Map{},
-		NniPort:                   "16777472",
+		NniPort:                   []string{"16777216"},
 	}
 	devicesList := make(map[string]OperInProgress)
 	devicesList["SDX6320030"] = opt82