VOL-3936: Remove voltha-lib-go circular dependency between the
ponresourcemanager and techprofile module
Change-Id: Iccbce27cd3cd6582336507619dc6a16cb337a43e
diff --git a/internal/pkg/core/common.go b/internal/pkg/core/common.go
index 43f0047..28cf77e 100644
--- a/internal/pkg/core/common.go
+++ b/internal/pkg/core/common.go
@@ -18,7 +18,7 @@
package core
import (
- "github.com/opencord/voltha-lib-go/v5/pkg/log"
+ "github.com/opencord/voltha-lib-go/v6/pkg/log"
)
var logger log.CLogger
diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index 9d4d891..e7e530a 100644
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -35,12 +35,12 @@
"github.com/golang/protobuf/ptypes"
grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware"
grpc_opentracing "github.com/grpc-ecosystem/go-grpc-middleware/tracing/opentracing"
- "github.com/opencord/voltha-lib-go/v5/pkg/adapters/adapterif"
- "github.com/opencord/voltha-lib-go/v5/pkg/config"
- "github.com/opencord/voltha-lib-go/v5/pkg/events/eventif"
- flow_utils "github.com/opencord/voltha-lib-go/v5/pkg/flows"
- "github.com/opencord/voltha-lib-go/v5/pkg/log"
- "github.com/opencord/voltha-lib-go/v5/pkg/pmmetrics"
+ "github.com/opencord/voltha-lib-go/v6/pkg/adapters/adapterif"
+ "github.com/opencord/voltha-lib-go/v6/pkg/config"
+ "github.com/opencord/voltha-lib-go/v6/pkg/events/eventif"
+ flow_utils "github.com/opencord/voltha-lib-go/v6/pkg/flows"
+ "github.com/opencord/voltha-lib-go/v6/pkg/log"
+ "github.com/opencord/voltha-lib-go/v6/pkg/pmmetrics"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
rsrcMgr "github.com/opencord/voltha-openolt-adapter/internal/pkg/resourcemanager"
diff --git a/internal/pkg/core/device_handler_test.go b/internal/pkg/core/device_handler_test.go
index 65ad88c..f041249 100644
--- a/internal/pkg/core/device_handler_test.go
+++ b/internal/pkg/core/device_handler_test.go
@@ -19,7 +19,7 @@
import (
"context"
- conf "github.com/opencord/voltha-lib-go/v5/pkg/config"
+ conf "github.com/opencord/voltha-lib-go/v6/pkg/config"
"net"
"reflect"
"sync"
@@ -28,11 +28,11 @@
"github.com/golang/protobuf/ptypes"
"github.com/golang/protobuf/ptypes/any"
- "github.com/opencord/voltha-lib-go/v5/pkg/db"
- fu "github.com/opencord/voltha-lib-go/v5/pkg/flows"
- "github.com/opencord/voltha-lib-go/v5/pkg/log"
- "github.com/opencord/voltha-lib-go/v5/pkg/pmmetrics"
- ponrmgr "github.com/opencord/voltha-lib-go/v5/pkg/ponresourcemanager"
+ "github.com/opencord/voltha-lib-go/v6/pkg/db"
+ fu "github.com/opencord/voltha-lib-go/v6/pkg/flows"
+ "github.com/opencord/voltha-lib-go/v6/pkg/log"
+ "github.com/opencord/voltha-lib-go/v6/pkg/pmmetrics"
+ ponrmgr "github.com/opencord/voltha-lib-go/v6/pkg/ponresourcemanager"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/config"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/resourcemanager"
@@ -158,6 +158,7 @@
ap := &mocks.MockAdapterProxy{}
ep := &mocks.MockEventProxy{}
cm := &conf.ConfigManager{}
+ cm.Backend = &db.Backend{StoreType: "etcd", Client: &mocks.MockKVClient{}}
cfg := &config.AdapterFlags{OmccEncryption: true}
openOLT := &OpenOLT{coreProxy: cp, adapterProxy: ap, eventProxy: ep, config: cfg}
dh := NewDeviceHandler(cp, ap, ep, device, openOLT, cm)
@@ -174,7 +175,8 @@
for i = 0; i < deviceInf.PonPorts; i++ {
dh.resourceMgr[i] = &resourcemanager.OpenOltResourceMgr{DeviceID: dh.device.Id, DeviceType: dh.device.Type, DevInfo: deviceInf,
KVStore: &db.Backend{
- Client: &mocks.MockKVClient{},
+ StoreType: "etcd",
+ Client: &mocks.MockKVClient{},
}}
dh.resourceMgr[i].InitLocalCache()
}
@@ -200,6 +202,10 @@
ponmgr.KVStore = &db.Backend{
Client: &mocks.MockKVClient{},
}
+ ponmgr.KVStoreForConfig = &db.Backend{
+ Client: &mocks.MockKVClient{},
+ }
+ ponmgr.Backend = "etcd"
ponmgr.PonResourceRanges = ranges
ponmgr.SharedIdxByType = sharedIdxByType
ponmgr.Technology = "XGS-PON"
@@ -213,8 +219,6 @@
logger.Fatal(ctx, err.Error())
}
*/
- tpMgr := &mocks.MockTechProfile{TpID: 64}
- ponmgr.TechProfileMgr = tpMgr
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
@@ -222,10 +226,40 @@
dh.totalPonPorts = NumPonPorts
dh.flowMgr = make([]*OpenOltFlowMgr, dh.totalPonPorts)
for i = 0; i < dh.totalPonPorts; i++ {
- // Instantiate flow manager
- if dh.flowMgr[i] = NewFlowManager(ctx, dh, dh.resourceMgr[i], dh.groupMgr, uint32(i)); dh.flowMgr[i] == nil {
- return nil
+ /*
+ // Instantiate flow manager
+ if dh.flowMgr[i] = NewFlowManager(ctx, dh, dh.resourceMgr[i], dh.groupMgr, uint32(i)); dh.flowMgr[i] == nil {
+ return nil
+ }
+
+ */
+ dh.flowMgr[i] = &OpenOltFlowMgr{}
+ dh.flowMgr[i].deviceHandler = dh
+ dh.flowMgr[i].ponPortIdx = i
+ dh.flowMgr[i].grpMgr = dh.groupMgr
+ dh.flowMgr[i].resourceMgr = dh.resourceMgr[i]
+ /*
+ if err = flowMgr.populateTechProfilePerPonPort(ctx); err != nil {
+ logger.Errorw(ctx, "error-while-populating-tech-profile-mgr", log.Fields{"err": err})
+ return nil
+ }
+ */
+ dh.flowMgr[i].techprofile = mocks.MockTechProfile{}
+ dh.flowMgr[i].gemToFlowIDs = make(map[uint32][]uint64)
+ dh.flowMgr[i].packetInGemPort = make(map[resourcemanager.PacketInInfoKey]uint32)
+ dh.flowMgr[i].flowIDToGems = make(map[uint64][]uint32)
+
+ // Create a slice of buffered channels for handling concurrent flows per ONU.
+ // The additional entry (+1) is to handle the NNI trap flows on a separate channel from individual ONUs channel
+ dh.flowMgr[i].incomingFlows = make([]chan flowControlBlock, MaxOnusPerPon+1)
+ for j := range dh.flowMgr[i].incomingFlows {
+ dh.flowMgr[i].incomingFlows[j] = make(chan flowControlBlock, maxConcurrentFlowsPerOnu)
+ // Spin up a go routine to handling incoming flows (add/remove).
+ // There will be on go routine per ONU.
+ // This routine will be blocked on the flowMgr.incomingFlows[onu-id] channel for incoming flows.
+ go dh.flowMgr[i].perOnuFlowHandlerRoutine(dh.flowMgr[i].incomingFlows[j])
}
+ dh.flowMgr[i].onuGemInfoMap = make(map[uint32]*resourcemanager.OnuGemInfo)
}
dh.Client = &mocks.MockOpenoltClient{}
dh.eventMgr = &OpenOltEventMgr{eventProxy: &mocks.MockEventProxy{}, handler: dh}
diff --git a/internal/pkg/core/olt_platform.go b/internal/pkg/core/olt_platform.go
index 232af80..1bacc64 100644
--- a/internal/pkg/core/olt_platform.go
+++ b/internal/pkg/core/olt_platform.go
@@ -20,8 +20,8 @@
import (
"context"
- "github.com/opencord/voltha-lib-go/v5/pkg/flows"
- "github.com/opencord/voltha-lib-go/v5/pkg/log"
+ "github.com/opencord/voltha-lib-go/v6/pkg/flows"
+ "github.com/opencord/voltha-lib-go/v6/pkg/log"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
ofp "github.com/opencord/voltha-protos/v4/go/openflow_13"
"github.com/opencord/voltha-protos/v4/go/voltha"
diff --git a/internal/pkg/core/olt_platform_test.go b/internal/pkg/core/olt_platform_test.go
index 6ff32db..9778417 100644
--- a/internal/pkg/core/olt_platform_test.go
+++ b/internal/pkg/core/olt_platform_test.go
@@ -19,7 +19,7 @@
import (
"context"
- fu "github.com/opencord/voltha-lib-go/v5/pkg/flows"
+ fu "github.com/opencord/voltha-lib-go/v6/pkg/flows"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
ofp "github.com/opencord/voltha-protos/v4/go/openflow_13"
"github.com/opencord/voltha-protos/v4/go/voltha"
diff --git a/internal/pkg/core/olt_state_transitions.go b/internal/pkg/core/olt_state_transitions.go
index 5fab1d5..efb1f29 100644
--- a/internal/pkg/core/olt_state_transitions.go
+++ b/internal/pkg/core/olt_state_transitions.go
@@ -22,7 +22,7 @@
"reflect"
"runtime"
- "github.com/opencord/voltha-lib-go/v5/pkg/log"
+ "github.com/opencord/voltha-lib-go/v6/pkg/log"
)
// DeviceState OLT Device state
diff --git a/internal/pkg/core/openolt.go b/internal/pkg/core/openolt.go
index 33b3f1b..db7da95 100644
--- a/internal/pkg/core/openolt.go
+++ b/internal/pkg/core/openolt.go
@@ -22,11 +22,11 @@
"sync"
"time"
- "github.com/opencord/voltha-lib-go/v5/pkg/adapters/adapterif"
- conf "github.com/opencord/voltha-lib-go/v5/pkg/config"
- "github.com/opencord/voltha-lib-go/v5/pkg/events/eventif"
- "github.com/opencord/voltha-lib-go/v5/pkg/kafka"
- "github.com/opencord/voltha-lib-go/v5/pkg/log"
+ "github.com/opencord/voltha-lib-go/v6/pkg/adapters/adapterif"
+ conf "github.com/opencord/voltha-lib-go/v6/pkg/config"
+ "github.com/opencord/voltha-lib-go/v6/pkg/events/eventif"
+ "github.com/opencord/voltha-lib-go/v6/pkg/kafka"
+ "github.com/opencord/voltha-lib-go/v6/pkg/log"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/config"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
"github.com/opencord/voltha-protos/v4/go/extension"
diff --git a/internal/pkg/core/openolt_eventmgr.go b/internal/pkg/core/openolt_eventmgr.go
index 1b5abd1..6ba684d 100644
--- a/internal/pkg/core/openolt_eventmgr.go
+++ b/internal/pkg/core/openolt_eventmgr.go
@@ -23,8 +23,8 @@
"fmt"
"strconv"
- "github.com/opencord/voltha-lib-go/v5/pkg/events/eventif"
- "github.com/opencord/voltha-lib-go/v5/pkg/log"
+ "github.com/opencord/voltha-lib-go/v6/pkg/events/eventif"
+ "github.com/opencord/voltha-lib-go/v6/pkg/log"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
"github.com/opencord/voltha-protos/v4/go/common"
oop "github.com/opencord/voltha-protos/v4/go/openolt"
diff --git a/internal/pkg/core/openolt_flowmgr.go b/internal/pkg/core/openolt_flowmgr.go
index 978cea8..1f4b116 100644
--- a/internal/pkg/core/openolt_flowmgr.go
+++ b/internal/pkg/core/openolt_flowmgr.go
@@ -22,15 +22,15 @@
"encoding/hex"
"errors"
"fmt"
- "github.com/opencord/voltha-lib-go/v5/pkg/meters"
+ "github.com/opencord/voltha-lib-go/v6/pkg/meters"
"strconv"
"strings"
"sync"
"time"
- "github.com/opencord/voltha-lib-go/v5/pkg/flows"
- "github.com/opencord/voltha-lib-go/v5/pkg/log"
- tp "github.com/opencord/voltha-lib-go/v5/pkg/techprofile"
+ "github.com/opencord/voltha-lib-go/v6/pkg/flows"
+ "github.com/opencord/voltha-lib-go/v6/pkg/log"
+ tp "github.com/opencord/voltha-lib-go/v6/pkg/techprofile"
rsrcMgr "github.com/opencord/voltha-openolt-adapter/internal/pkg/resourcemanager"
"github.com/opencord/voltha-protos/v4/go/common"
ic "github.com/opencord/voltha-protos/v4/go/inter_container"
@@ -851,7 +851,13 @@
var tpCount int
for _, techRange := range f.resourceMgr.DevInfo.Ranges {
for _, intfID := range techRange.IntfIds {
- f.techprofile = f.resourceMgr.PonRsrMgr.TechProfileMgr
+ var err error
+ f.techprofile, err = tp.NewTechProfile(ctx, f.resourceMgr.PonRsrMgr, f.resourceMgr.PonRsrMgr.Backend,
+ f.resourceMgr.PonRsrMgr.Address, f.deviceHandler.cm.Backend.PathPrefix)
+ if err != nil || f.techprofile == nil {
+ logger.Errorw(ctx, "failed-to-allocate-to-techprofile-for-pon-port", log.Fields{"intfID": intfID, "err": err})
+ return fmt.Errorf("failed-to-allocate-tech-profile-for-pon-port--pon-%v-err-%v", intfID, err)
+ }
tpCount++
logger.Debugw(ctx, "init-tech-profile-done",
log.Fields{
diff --git a/internal/pkg/core/openolt_flowmgr_test.go b/internal/pkg/core/openolt_flowmgr_test.go
index 214fa61..0d966d3 100644
--- a/internal/pkg/core/openolt_flowmgr_test.go
+++ b/internal/pkg/core/openolt_flowmgr_test.go
@@ -21,6 +21,7 @@
"context"
"encoding/hex"
"fmt"
+ "github.com/opencord/voltha-openolt-adapter/pkg/mocks"
"reflect"
"strconv"
"sync"
@@ -29,8 +30,8 @@
"github.com/opencord/voltha-protos/v4/go/voltha"
- fu "github.com/opencord/voltha-lib-go/v5/pkg/flows"
- "github.com/opencord/voltha-lib-go/v5/pkg/log"
+ fu "github.com/opencord/voltha-lib-go/v6/pkg/flows"
+ "github.com/opencord/voltha-lib-go/v6/pkg/log"
rsrcMgr "github.com/opencord/voltha-openolt-adapter/internal/pkg/resourcemanager"
ofp "github.com/opencord/voltha-protos/v4/go/openflow_13"
openoltpb2 "github.com/opencord/voltha-protos/v4/go/openolt"
@@ -55,7 +56,8 @@
packetInGemPort[rsrcMgr.PacketInInfoKey{IntfID: i, OnuID: i + 1, LogicalPort: i + 1, VlanID: uint16(i), Priority: uint8(i)}] = i + 1
dh.flowMgr[i].packetInGemPort = packetInGemPort
- dh.flowMgr[i].techprofile = dh.resourceMgr[i].PonRsrMgr.TechProfileMgr
+ dh.flowMgr[i].techprofile = mocks.MockTechProfile{}
+
interface2mcastQeueuMap := make(map[uint32]*QueueInfoBrief)
interface2mcastQeueuMap[0] = &QueueInfoBrief{
gemPortID: 4000,
diff --git a/internal/pkg/core/openolt_groupmgr.go b/internal/pkg/core/openolt_groupmgr.go
index 4f633a7..02a18c0 100644
--- a/internal/pkg/core/openolt_groupmgr.go
+++ b/internal/pkg/core/openolt_groupmgr.go
@@ -16,8 +16,8 @@
import (
"context"
- "github.com/opencord/voltha-lib-go/v5/pkg/flows"
- "github.com/opencord/voltha-lib-go/v5/pkg/log"
+ "github.com/opencord/voltha-lib-go/v6/pkg/flows"
+ "github.com/opencord/voltha-lib-go/v6/pkg/log"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
rsrcMgr "github.com/opencord/voltha-openolt-adapter/internal/pkg/resourcemanager"
ofp "github.com/opencord/voltha-protos/v4/go/openflow_13"
diff --git a/internal/pkg/core/openolt_test.go b/internal/pkg/core/openolt_test.go
index 8665028..7056063 100644
--- a/internal/pkg/core/openolt_test.go
+++ b/internal/pkg/core/openolt_test.go
@@ -28,13 +28,13 @@
"reflect"
"testing"
- conf "github.com/opencord/voltha-lib-go/v5/pkg/config"
+ conf "github.com/opencord/voltha-lib-go/v6/pkg/config"
- com "github.com/opencord/voltha-lib-go/v5/pkg/adapters/common"
- "github.com/opencord/voltha-lib-go/v5/pkg/events"
- fu "github.com/opencord/voltha-lib-go/v5/pkg/flows"
- "github.com/opencord/voltha-lib-go/v5/pkg/kafka"
- "github.com/opencord/voltha-lib-go/v5/pkg/log"
+ com "github.com/opencord/voltha-lib-go/v6/pkg/adapters/common"
+ "github.com/opencord/voltha-lib-go/v6/pkg/events"
+ fu "github.com/opencord/voltha-lib-go/v6/pkg/flows"
+ "github.com/opencord/voltha-lib-go/v6/pkg/kafka"
+ "github.com/opencord/voltha-lib-go/v6/pkg/log"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/config"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
ic "github.com/opencord/voltha-protos/v4/go/inter_container"
diff --git a/internal/pkg/core/statsmanager.go b/internal/pkg/core/statsmanager.go
index 4d7d52d..8b07fa2 100755
--- a/internal/pkg/core/statsmanager.go
+++ b/internal/pkg/core/statsmanager.go
@@ -25,7 +25,7 @@
"sync"
"time"
- "github.com/opencord/voltha-lib-go/v5/pkg/log"
+ "github.com/opencord/voltha-lib-go/v6/pkg/log"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
"github.com/opencord/voltha-protos/v4/go/extension"
"github.com/opencord/voltha-protos/v4/go/openolt"