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"
diff --git a/internal/pkg/olterrors/common.go b/internal/pkg/olterrors/common.go
index 7a1d00d..9ac8676 100644
--- a/internal/pkg/olterrors/common.go
+++ b/internal/pkg/olterrors/common.go
@@ -18,7 +18,7 @@
package olterrors
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/olterrors/olterrors.go b/internal/pkg/olterrors/olterrors.go
index 43bcd07..4aa2373 100644
--- a/internal/pkg/olterrors/olterrors.go
+++ b/internal/pkg/olterrors/olterrors.go
@@ -21,7 +21,7 @@
"context"
"encoding/json"
"fmt"
- "github.com/opencord/voltha-lib-go/v5/pkg/log"
+ "github.com/opencord/voltha-lib-go/v6/pkg/log"
"strings"
)
diff --git a/internal/pkg/resourcemanager/common.go b/internal/pkg/resourcemanager/common.go
index 256e657..187242c 100644
--- a/internal/pkg/resourcemanager/common.go
+++ b/internal/pkg/resourcemanager/common.go
@@ -18,7 +18,7 @@
package resourcemanager
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/resourcemanager/resourcemanager.go b/internal/pkg/resourcemanager/resourcemanager.go
index 16b2723..3726ea5 100755
--- a/internal/pkg/resourcemanager/resourcemanager.go
+++ b/internal/pkg/resourcemanager/resourcemanager.go
@@ -26,10 +26,10 @@
"sync"
"time"
- "github.com/opencord/voltha-lib-go/v5/pkg/db"
- "github.com/opencord/voltha-lib-go/v5/pkg/db/kvstore"
- "github.com/opencord/voltha-lib-go/v5/pkg/log"
- ponrmgr "github.com/opencord/voltha-lib-go/v5/pkg/ponresourcemanager"
+ "github.com/opencord/voltha-lib-go/v6/pkg/db"
+ "github.com/opencord/voltha-lib-go/v6/pkg/db/kvstore"
+ "github.com/opencord/voltha-lib-go/v6/pkg/log"
+ ponrmgr "github.com/opencord/voltha-lib-go/v6/pkg/ponresourcemanager"
ofp "github.com/opencord/voltha-protos/v4/go/openflow_13"
"github.com/opencord/voltha-protos/v4/go/openolt"
)
@@ -155,6 +155,10 @@
groupInfo map[string]*GroupInfo
groupInfoLock sync.RWMutex
// Local maps used for write-through-cache - end
+
+ OnuIDMgmtLock sync.RWMutex
+ GemPortIDMgmtLock sync.RWMutex
+ AllocIDMgmtLock sync.RWMutex
}
func newKVClient(ctx context.Context, storeType string, address string, timeout time.Duration) (kvstore.Client, error) {
@@ -313,8 +317,10 @@
// GetONUID returns the available onuID for the given pon-port
func (rsrcMgr *OpenOltResourceMgr) GetONUID(ctx context.Context, PonIntfID uint32) (uint32, error) {
// Get ONU id for a provided pon interface ID.
- onuID, err := rsrcMgr.PonRsrMgr.TechProfileMgr.GetResourceID(ctx, PonIntfID,
+ rsrcMgr.OnuIDMgmtLock.Lock()
+ onuID, err := rsrcMgr.PonRsrMgr.GetResourceID(ctx, PonIntfID,
ponrmgr.ONU_ID, 1)
+ rsrcMgr.OnuIDMgmtLock.Unlock()
if err != nil {
logger.Errorf(ctx, "Failed to get resource for interface %d for type %s",
PonIntfID, ponrmgr.ONU_ID)
@@ -472,13 +478,43 @@
}
+// FreeResourceID frees PON resource ID like ONU ID, Alloc ID or GEM Port ID
+func (rsrcMgr *OpenOltResourceMgr) FreeResourceID(ctx context.Context, intfID uint32, resourceType string, ReleaseContent []uint32) error {
+ logger.Debugw(ctx, "freeing-resource-id", log.Fields{
+ "intf-id": intfID,
+ "resource-type": resourceType,
+ "release-content": ReleaseContent,
+ })
+ var err error
+ switch resourceType {
+ case rsrcMgr.PonRsrMgr.GetResourceTypeAllocID():
+ rsrcMgr.AllocIDMgmtLock.Lock()
+ err = rsrcMgr.PonRsrMgr.FreeResourceID(ctx, intfID, resourceType, ReleaseContent)
+ rsrcMgr.AllocIDMgmtLock.Unlock()
+ case rsrcMgr.PonRsrMgr.GetResourceTypeGemPortID():
+ rsrcMgr.GemPortIDMgmtLock.Lock()
+ err = rsrcMgr.PonRsrMgr.FreeResourceID(ctx, intfID, resourceType, ReleaseContent)
+ rsrcMgr.GemPortIDMgmtLock.Unlock()
+ case rsrcMgr.PonRsrMgr.GetResourceTypeOnuID():
+ rsrcMgr.OnuIDMgmtLock.Lock()
+ err = rsrcMgr.PonRsrMgr.FreeResourceID(ctx, intfID, resourceType, ReleaseContent)
+ rsrcMgr.OnuIDMgmtLock.Unlock()
+ default:
+ return fmt.Errorf("resourceType %s not supported", resourceType)
+ }
+ if err != nil {
+ return err
+ }
+ return nil
+}
+
// FreeonuID releases(make free) onu id for a particular pon-port
func (rsrcMgr *OpenOltResourceMgr) FreeonuID(ctx context.Context, intfID uint32, onuID []uint32) {
if len(onuID) == 0 {
logger.Info(ctx, "onu id slice is nil, nothing to free")
return
}
- if err := rsrcMgr.PonRsrMgr.TechProfileMgr.FreeResourceID(ctx, intfID, ponrmgr.ONU_ID, onuID); err != nil {
+ if err := rsrcMgr.FreeResourceID(ctx, intfID, ponrmgr.ONU_ID, onuID); err != nil {
logger.Errorw(ctx, "error-while-freeing-onu-id", log.Fields{
"intf-id": intfID,
"onu-id": onuID,
@@ -506,7 +542,7 @@
rsrcMgr.RemoveAllocIDForOnu(ctx, intfID, onuID, uniID, allocID)
allocIDs := make([]uint32, 0)
allocIDs = append(allocIDs, allocID)
- if err := rsrcMgr.PonRsrMgr.TechProfileMgr.FreeResourceID(ctx, intfID, ponrmgr.ALLOC_ID, allocIDs); err != nil {
+ if err := rsrcMgr.FreeResourceID(ctx, intfID, ponrmgr.ALLOC_ID, allocIDs); err != nil {
logger.Errorw(ctx, "error-while-freeing-alloc-id", log.Fields{
"intf-id": intfID,
"onu-id": onuID,
@@ -525,7 +561,7 @@
gemPortIDs := make([]uint32, 0)
gemPortIDs = append(gemPortIDs, gemPortID)
- if err := rsrcMgr.PonRsrMgr.TechProfileMgr.FreeResourceID(ctx, intfID, ponrmgr.GEMPORT_ID, gemPortIDs); err != nil {
+ if err := rsrcMgr.FreeResourceID(ctx, intfID, ponrmgr.GEMPORT_ID, gemPortIDs); err != nil {
logger.Errorw(ctx, "error-while-freeing-gem-port-id", log.Fields{
"intf-id": intfID,
"onu-id": onuID,
@@ -545,7 +581,7 @@
delete(rsrcMgr.allocIDsForOnu, intfOnuIDuniID)
rsrcMgr.allocIDsForOnuLock.Unlock()
- if err := rsrcMgr.PonRsrMgr.TechProfileMgr.FreeResourceID(ctx, intfID,
+ if err := rsrcMgr.FreeResourceID(ctx, intfID,
ponrmgr.ALLOC_ID,
AllocIDs); err != nil {
logger.Errorw(ctx, "error-while-freeing-all-alloc-ids-for-onu", log.Fields{
@@ -561,7 +597,7 @@
delete(rsrcMgr.gemPortIDsForOnu, intfOnuIDuniID)
rsrcMgr.gemPortIDsForOnuLock.Unlock()
- if err := rsrcMgr.PonRsrMgr.TechProfileMgr.FreeResourceID(ctx, intfID,
+ if err := rsrcMgr.FreeResourceID(ctx, intfID,
ponrmgr.GEMPORT_ID,
GEMPortIDs); err != nil {
logger.Errorw(ctx, "error-while-freeing-all-gem-port-ids-for-onu", log.Fields{
diff --git a/internal/pkg/resourcemanager/resourcemanager_test.go b/internal/pkg/resourcemanager/resourcemanager_test.go
index 443f418..f8fabbc 100644
--- a/internal/pkg/resourcemanager/resourcemanager_test.go
+++ b/internal/pkg/resourcemanager/resourcemanager_test.go
@@ -27,18 +27,17 @@
"context"
"encoding/json"
"errors"
- "github.com/opencord/voltha-openolt-adapter/pkg/mocks"
"reflect"
"strconv"
"strings"
"testing"
"time"
- "github.com/opencord/voltha-lib-go/v5/pkg/db"
- "github.com/opencord/voltha-lib-go/v5/pkg/db/kvstore"
- fu "github.com/opencord/voltha-lib-go/v5/pkg/flows"
- "github.com/opencord/voltha-lib-go/v5/pkg/log"
- ponrmgr "github.com/opencord/voltha-lib-go/v5/pkg/ponresourcemanager"
+ "github.com/opencord/voltha-lib-go/v6/pkg/db"
+ "github.com/opencord/voltha-lib-go/v6/pkg/db/kvstore"
+ fu "github.com/opencord/voltha-lib-go/v6/pkg/flows"
+ "github.com/opencord/voltha-lib-go/v6/pkg/log"
+ ponrmgr "github.com/opencord/voltha-lib-go/v6/pkg/ponresourcemanager"
ofp "github.com/opencord/voltha-protos/v4/go/openflow_13"
"github.com/opencord/voltha-protos/v4/go/openolt"
)
@@ -120,7 +119,6 @@
logger.Fatal(ctx, err.Error())
}
*/
- resMgr.PonRsrMgr.TechProfileMgr = &mocks.MockTechProfile{TpID: 64}
return &resMgr
}