VOL-1173 : Removed hash based storage; replaced with per device protobuf
- Ensured proxies issue callbacks instead of forcing with goroutines
- Fixed mutex issue with proxy component
Change-Id: Idabd3257c6d264c0f607ee228e406810304dab43
diff --git a/rw_core/core/device_manager.go b/rw_core/core/device_manager.go
index 45584a1..682de48 100644
--- a/rw_core/core/device_manager.go
+++ b/rw_core/core/device_manager.go
@@ -18,7 +18,6 @@
import (
"context"
"errors"
- "github.com/gogo/protobuf/proto"
"github.com/opencord/voltha-go/common/log"
"github.com/opencord/voltha-go/db/model"
"github.com/opencord/voltha-go/kafka"
@@ -184,20 +183,37 @@
return device.Root, nil
}
+// GetDevice retrieves the latest device information from the data model
func (dMgr *DeviceManager) ListDevices() (*voltha.Devices, error) {
log.Debug("ListDevices")
result := &voltha.Devices{}
- dMgr.lockDeviceAgentsMap.Lock()
- defer dMgr.lockDeviceAgentsMap.Unlock()
- for _, agent := range dMgr.deviceAgents {
- if device, err := agent.getDevice(); err == nil {
- cloned := proto.Clone(device).(*voltha.Device)
- result.Items = append(result.Items, cloned)
+ if devices := dMgr.clusterDataProxy.Get("/devices", 0, false, ""); devices != nil {
+ for _, device := range devices.([]interface{}) {
+ if agent := dMgr.getDeviceAgent(device.(*voltha.Device).Id); agent == nil {
+ agent = newDeviceAgent(dMgr.adapterProxy, device.(*voltha.Device), dMgr, dMgr.clusterDataProxy)
+ dMgr.addDeviceAgentToMap(agent)
+ agent.start(nil)
+ }
+ result.Items = append(result.Items, device.(*voltha.Device))
}
}
return result, nil
}
+//func (dMgr *DeviceManager) ListDevices() (*voltha.Devices, error) {
+// log.Debug("ListDevices")
+// result := &voltha.Devices{}
+// dMgr.lockDeviceAgentsMap.Lock()
+// defer dMgr.lockDeviceAgentsMap.Unlock()
+// for _, agent := range dMgr.deviceAgents {
+// if device, err := agent.getDevice(); err == nil {
+// //cloned := proto.Clone(device).(*voltha.Device)
+// result.Items = append(result.Items, device)
+// }
+// }
+// return result, nil
+//}
+
func (dMgr *DeviceManager) updateDevice(device *voltha.Device) error {
log.Debugw("updateDevice", log.Fields{"deviceid": device.Id, "device": device})
if agent := dMgr.getDeviceAgent(device.Id); agent != nil {