This commit consists of some miscellaneous small changes and some
exception tracking to help packet-out debugging in the adapter.
Change-Id: I1d6b50f60c800768acb5a132c1d630416ac9811f
diff --git a/rw_core/core/logical_device_agent.go b/rw_core/core/logical_device_agent.go
index ee3d82a..7875da7 100644
--- a/rw_core/core/logical_device_agent.go
+++ b/rw_core/core/logical_device_agent.go
@@ -110,12 +110,12 @@
lp.DeviceId = agent.rootDeviceId
lp.Id = fmt.Sprintf("nni-%d", port.PortNo)
lp.OfpPort.PortNo = port.PortNo
- lp.OfpPort.Name = portCap.Port.Id
+ lp.OfpPort.Name = lp.Id
lp.DevicePortNo = port.PortNo
ld.Ports = append(ld.Ports, lp)
}
agent.lockLogicalDevice.Lock()
- defer agent.lockLogicalDevice.Unlock()
+ //defer agent.lockLogicalDevice.Unlock()
// Save the logical device
if added := agent.clusterDataProxy.AddWithID("/logical_devices", ld.Id, ld, ""); added == nil {
log.Errorw("failed-to-add-logical-device", log.Fields{"logicaldeviceId": agent.logicalDeviceId})
@@ -133,6 +133,11 @@
agent.flowProxy.RegisterCallback(model.POST_UPDATE, agent.flowTableUpdated)
agent.groupProxy.RegisterCallback(model.POST_UPDATE, agent.groupTableUpdated)
+ agent.lockLogicalDevice.Unlock()
+
+ // Setup the device graph
+ go agent.setupDeviceGraph()
+
return nil
}
@@ -255,7 +260,7 @@
if ldevice, err := agent.getLogicalDeviceWithoutLock(); err != nil {
return status.Error(codes.NotFound, agent.logicalDeviceId)
} else {
- log.Infow("!!!!!!!!!!!ADDING-UNI", log.Fields{"deviceId": childDevice.Id})
+ log.Debugw("adding-uni", log.Fields{"deviceId": childDevice.Id})
portCap.Port.RootPort = false
//TODO: For now use the channel id assigned by the OLT as logical port number
lPortNo := childDevice.ProxyAddress.ChannelId
@@ -265,6 +270,7 @@
portCap.Port.DeviceId = childDevice.Id
portCap.Port.DevicePortNo = uniPort
portCap.Port.DeviceId = childDevice.Id
+
ldevice.Ports = append(ldevice.Ports, portCap.Port)
return agent.updateLogicalDeviceWithoutLock(ldevice)
}
@@ -959,9 +965,6 @@
return nil
}
- // Ensure the device graph has been setup
- agent.setupDeviceGraph()
-
var groups *ofp.FlowGroups
lDevice, _ := agent.getLogicalDeviceWithoutLock()
groups = lDevice.FlowGroups
@@ -1001,9 +1004,6 @@
return nil
}
- // Ensure the device graph has been setup
- agent.setupDeviceGraph()
-
var flows *ofp.Flows
lDevice, _ := agent.getLogicalDeviceWithoutLock()
flows = lDevice.Flows
diff --git a/rw_core/core/logical_device_manager.go b/rw_core/core/logical_device_manager.go
index f49e52a..19eb6a4 100644
--- a/rw_core/core/logical_device_manager.go
+++ b/rw_core/core/logical_device_manager.go
@@ -285,7 +285,11 @@
log.Debugw("AddUNILogicalPort", log.Fields{"logDeviceId": logDeviceId, "parentId": parentId})
if agent := ldMgr.getLogicalDeviceAgent(*logDeviceId); agent != nil {
- return agent.addUNILogicalPort(ctx, childDevice)
+ if err := agent.addUNILogicalPort(ctx, childDevice); err != nil {
+ return err
+ }
+ // Update the device routes - let it run in its own go routine as it can take time
+ go agent.updateRoutes()
}
return status.Errorf(codes.NotFound, "%s", childDevice.Id)
}