[VOL-1678] Resolve PENDING_ADD issue
This commit adds the necessary APIs in the rw_core that are
required to process a flow/group stats request from ONOS.
Change-Id: I5252ab74963ab4a1b1bd3b4cf4d88f1e28054cde
diff --git a/rw_core/core/logical_device_agent.go b/rw_core/core/logical_device_agent.go
index 176634d..489c79f 100644
--- a/rw_core/core/logical_device_agent.go
+++ b/rw_core/core/logical_device_agent.go
@@ -183,6 +183,30 @@
return nil, status.Errorf(codes.NotFound, "logical_device-%s", agent.logicalDeviceId)
}
+func (agent *LogicalDeviceAgent) ListLogicalDeviceFlows() (*ofp.Flows, error) {
+ log.Debug("ListLogicalDeviceFlows")
+ agent.lockLogicalDevice.RLock()
+ defer agent.lockLogicalDevice.RUnlock()
+ logicalDevice := agent.clusterDataProxy.Get("/logical_devices/"+agent.logicalDeviceId, 0, false, "")
+ if lDevice, ok := logicalDevice.(*voltha.LogicalDevice); ok {
+ cFlows := (proto.Clone(lDevice.Flows)).(*ofp.Flows)
+ return cFlows, nil
+ }
+ return nil, status.Errorf(codes.NotFound, "logical_device-%s", agent.logicalDeviceId)
+}
+
+func (agent *LogicalDeviceAgent) ListLogicalDeviceFlowGroups() (*ofp.FlowGroups, error) {
+ log.Debug("ListLogicalDeviceFlowGroups")
+ agent.lockLogicalDevice.RLock()
+ defer agent.lockLogicalDevice.RUnlock()
+ logicalDevice := agent.clusterDataProxy.Get("/logical_devices/"+agent.logicalDeviceId, 0, false, "")
+ if lDevice, ok := logicalDevice.(*voltha.LogicalDevice); ok {
+ cFlowGroups := (proto.Clone(lDevice.FlowGroups)).(*ofp.FlowGroups)
+ return cFlowGroups, nil
+ }
+ return nil, status.Errorf(codes.NotFound, "logical_device-%s", agent.logicalDeviceId)
+}
+
func (agent *LogicalDeviceAgent) ListLogicalDevicePorts() (*voltha.LogicalPorts, error) {
log.Debug("ListLogicalDevicePorts")
agent.lockLogicalDevice.RLock()