[VOL-5488] fetch nni-port ID from voltdevice

Change-Id: I12a81dbb4e45cb4728f49d1d6324afc1ed6260b1
Signed-off-by: Akash Reddy Kankanala <akash.kankanala@radisys.com>
diff --git a/VERSION b/VERSION
index 1a03094..9767cc9 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.1.9
+0.1.10
diff --git a/internal/pkg/application/application.go b/internal/pkg/application/application.go
index e8bc663..cc5e331 100644
--- a/internal/pkg/application/application.go
+++ b/internal/pkg/application/application.go
@@ -1168,7 +1168,7 @@
 	}
 	if len(d.(*VoltDevice).NniPort) > 0 {
 		for _, nniPort := range d.(*VoltDevice).NniPort {
-			nniPortID, err := GetApplication().GetPortID(nniPort)
+			nniPortID, err := GetApplication().GetDevicePortID(device, nniPort)
 			if err != nil {
 				logger.Errorw(ctx, "Error getting port ID by port Name", log.Fields{"Error": err})
 				continue
@@ -2349,3 +2349,16 @@
 		va.DevicesDisc.Store(id, device)
 	}
 }
+
+func (va *VoltApplication) GetDevicePortID(device, port string) (uint32, error) {
+	logger.Debugw(ctx, "Received Get Device Port ID", log.Fields{"Port": port})
+	d := va.GetDevice(device)
+	if d == nil {
+		return 0, fmt.Errorf("device not found: %s", device)
+	}
+	value, ok := d.Ports.Load(port)
+	if !ok {
+		return 0, fmt.Errorf("port not found: %s", port)
+	}
+	return value.(*VoltPort).ID, nil
+}
diff --git a/internal/pkg/application/igmpprofiles.go b/internal/pkg/application/igmpprofiles.go
index f26e33b..673dacc 100644
--- a/internal/pkg/application/igmpprofiles.go
+++ b/internal/pkg/application/igmpprofiles.go
@@ -565,7 +565,7 @@
 	if err != nil {
 		return nil, err
 	}
-	nniPortID, err1 := GetApplication().GetPortID(nniPort)
+	nniPortID, err1 := GetApplication().GetDevicePortID(device, nniPort)
 	if err1 != nil {
 		return nil, errors.New("Unknown NNI outport")
 	}
diff --git a/internal/pkg/application/service.go b/internal/pkg/application/service.go
index b36cb8f..bb2966f 100644
--- a/internal/pkg/application/service.go
+++ b/internal/pkg/application/service.go
@@ -593,7 +593,7 @@
 			logger.Errorw(ctx, "Error getting NNI port", log.Fields{"Error": err1})
 			return nil, err1
 		}
-		inport, _ = GetApplication().GetPortID(nniPort)
+		inport, _ = GetApplication().GetDevicePortID(device.Name, nniPort)
 	}
 	outport, _ := GetApplication().GetPortID(vs.Port)
 	// PortName and PortID to be used for validation of port before flow pushing
@@ -791,7 +791,7 @@
 			logger.Errorw(ctx, "Error getting NNI port", log.Fields{"Error": err})
 			return nil, err
 		}
-		outport, _ = GetApplication().GetPortID(nniPort)
+		outport, _ = GetApplication().GetDevicePortID(device.Name, nniPort)
 	}
 	inport, _ := GetApplication().GetPortID(vs.Port)
 	// PortName and PortID to be used for validation of port before flow pushing
diff --git a/internal/pkg/application/vnets.go b/internal/pkg/application/vnets.go
index 8a23636..e4f96be 100644
--- a/internal/pkg/application/vnets.go
+++ b/internal/pkg/application/vnets.go
@@ -1953,7 +1953,7 @@
 			logger.Errorw(ctx, "Error getting NNI port", log.Fields{"Error": err})
 			return nil, err
 		}
-		inport, _ = GetApplication().GetPortID(nniPort)
+		inport, _ = GetApplication().GetDevicePortID(device.Name, nniPort)
 	}
 
 	subFlow.SetInPort(inport)
@@ -2051,7 +2051,7 @@
 		logger.Errorw(ctx, "Failed to fetch nni port from vpv", log.Fields{"error": err, "device": vpv.Device})
 		return nil, err
 	}
-	nniport, err := GetApplication().GetPortID(nni)
+	nniport, err := GetApplication().GetDevicePortID(vpv.Device, nni)
 	if err != nil {
 		logger.Errorw(ctx, "Failed to fetch port ID for nni", log.Fields{"error": err, "nni": nni})
 		return nil, err
@@ -2212,7 +2212,7 @@
 	if err != nil {
 		return nil, err
 	}
-	nniport, err := GetApplication().GetPortID(nni)
+	nniport, err := GetApplication().GetDevicePortID(vpv.Device, nni)
 	if err != nil {
 		return nil, err
 	}
@@ -2717,7 +2717,7 @@
 			logger.Errorw(ctx, "Error getting NNI port", log.Fields{"Error": err})
 			return true
 		}
-		if portID, err := va.GetPortID(nniPort); err == nil {
+		if portID, err := va.GetDevicePortID(device.Name, nniPort); err == nil {
 			if state, _ := controller.GetController().GetPortState(device.Name, nniPort); state != controller.PortStateUp {
 				logger.Warnw(ctx, "Skipping Dev Flow Configuration - Port Down", log.Fields{"Device": device})
 				return true
@@ -2777,7 +2777,7 @@
 			logger.Errorw(ctx, "Error getting NNI port", log.Fields{"Error": err})
 			return true
 		}
-		nniPortID, err := va.GetPortID(nniPort)
+		nniPortID, err := va.GetDevicePortID(device.Name, nniPort)
 		if err != nil {
 			logger.Errorw(ctx, "Push ICMPv6 Failed - Failed to get NNI Port Id", log.Fields{"Port": device.NniPort, "Reason": err.Error})
 		}
@@ -2829,7 +2829,7 @@
 			logger.Errorw(ctx, "Error getting NNI port", log.Fields{"Error": err})
 			return true
 		}
-		if portID, err := va.GetPortID(nniPort); err == nil {
+		if portID, err := va.GetDevicePortID(device.Name, nniPort); err == nil {
 			if state, _ := controller.GetController().GetPortState(device.Name, nniPort); state != controller.PortStateUp {
 				logger.Warnw(ctx, "Skipping ICMPv6 Flow Deletion - Port Down", log.Fields{"Device": device})
 				return true
@@ -2883,7 +2883,7 @@
 			logger.Errorw(ctx, "Error getting NNI port", log.Fields{"Error": err})
 			return true
 		}
-		nniPortID, err := va.GetPortID(nniPort)
+		nniPortID, err := va.GetDevicePortID(device.Name, nniPort)
 		if err != nil {
 			logger.Errorw(ctx, "Delete ICMPv6 Failed - Failed to get NNI Port Id", log.Fields{"Port": device.NniPort, "Reason": err.Error})
 		}
@@ -2950,7 +2950,7 @@
 			logger.Errorw(ctx, "Error getting NNI port", log.Fields{"Error": err})
 			return true
 		}
-		if portID, err := va.GetPortID(nniPort); err == nil {
+		if portID, err := va.GetDevicePortID(device.Name, nniPort); err == nil {
 			if state, _ := controller.GetController().GetPortState(device.Name, nniPort); state != controller.PortStateUp {
 				logger.Warnw(ctx, "Skipping ICMPv6 Flow Deletion - Port Down", log.Fields{"Device": device})
 				return false
diff --git a/internal/pkg/application/vnets_test.go b/internal/pkg/application/vnets_test.go
index 7016667..9fa1e3f 100644
--- a/internal/pkg/application/vnets_test.go
+++ b/internal/pkg/application/vnets_test.go
@@ -2125,6 +2125,7 @@
 				assert.NotNil(t, got)
 			case "BuildDsDhcp6Flows":
 				voltDev.NniPort = []string{"16777216"}
+				voltDev.Ports.Store("16777216", voltPort)
 				va.DevicesDisc.Store("SDX6320031", voltDev)
 				va.DevicesConfig.Store("SDX6320031", deviceConfig)
 				got, err := vpv.BuildDsDhcp6Flows()