VOL-4217: Update to latest version of protos and voltha-lib-go for
voltha-2.9 release. Tested with BAL3.10
Change-Id: Ibdc5978a1f2df713965a27ce26d0e22c1ffa366a
diff --git a/core/olt_manager.go b/core/olt_manager.go
index ab171ef..9264e22 100644
--- a/core/olt_manager.go
+++ b/core/olt_manager.go
@@ -22,8 +22,10 @@
"encoding/json"
"errors"
"fmt"
+ "github.com/golang/protobuf/jsonpb"
+ ponrmgr "github.com/opencord/voltha-lib-go/v7/pkg/ponresourcemanager"
+ "github.com/opencord/voltha-protos/v5/go/tech_profile"
"io"
- "io/ioutil"
"os"
"strconv"
"sync"
@@ -32,10 +34,9 @@
"github.com/cenkalti/backoff/v3"
"github.com/opencord/openolt-scale-tester/config"
- "github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore"
- "github.com/opencord/voltha-lib-go/v4/pkg/log"
- "github.com/opencord/voltha-lib-go/v4/pkg/techprofile"
- oop "github.com/opencord/voltha-protos/v4/go/openolt"
+ "github.com/opencord/voltha-lib-go/v7/pkg/db/kvstore"
+ "github.com/opencord/voltha-lib-go/v7/pkg/log"
+ oop "github.com/opencord/voltha-protos/v5/go/openolt"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
@@ -55,11 +56,10 @@
ipPort string
deviceInfo *oop.DeviceInfo
OnuDeviceMap map[OnuDeviceKey]*OnuDevice `json:"onuDeviceMap"`
- TechProfile map[uint32]*techprofile.TechProfileIf
clientConn *grpc.ClientConn
openOltClient oop.OpenoltClient
testConfig *config.OpenOltScaleTesterConfig
- rsrMgr *OpenOltResourceMgr
+ rsrMgr []*OpenOltResourceMgr
lockRsrAlloc sync.RWMutex
lockOpenOltManager sync.RWMutex
}
@@ -75,7 +75,6 @@
}
func (om *OpenOltManager) readAndLoadTPsToEtcd() {
- var byteValue []byte
var err error
// Verify that etcd is up before starting the application.
etcdIpPort := "http://" + om.testConfig.KVStoreHost + ":" + strconv.Itoa(om.testConfig.KVStorePort)
@@ -98,14 +97,17 @@
}
logger.Debugw(nil, "tp-file-opened-successfully", log.Fields{"tpFile": tpFilePath})
- // read our opened json file as a byte array.
- if byteValue, err = ioutil.ReadAll(jsonFile); err != nil {
- logger.Fatalw(nil, "could-not-read-tp-file", log.Fields{"err": err, "tpFile": tpFilePath})
- }
+ /*
+ // read our opened json file as a byte array.
+ if byteValue, err = ioutil.ReadAll(jsonFile); err != nil {
+ logger.Fatalw(nil, "could-not-read-tp-file", log.Fields{"err": err, "tpFile": tpFilePath})
+ }
- var tp techprofile.TechProfile
+ */
- if err = json.Unmarshal(byteValue, &tp); err != nil {
+ var tp tech_profile.TechProfile
+
+ if err = jsonpb.Unmarshal(jsonFile, &tp); err != nil {
logger.Fatalw(nil, "could-not-unmarshal-tp", log.Fields{"err": err, "tpFile": tpFilePath})
} else {
logger.Infow(nil, "tp-read-from-file", log.Fields{"tp": tp, "tpFile": tpFilePath})
@@ -121,8 +123,8 @@
if kvResult == nil {
logger.Fatal(nil, "tp-not-found-on-kv-after-load", log.Fields{"key": kvPath, "err": err})
} else {
- var KvTpIns techprofile.TechProfile
- var resPtr = &KvTpIns
+ var KvTp tech_profile.TechProfile
+ var resPtr = &KvTp
if value, err := kvstore.ToByte(kvResult.Value); err == nil {
if err = json.Unmarshal(value, resPtr); err != nil {
logger.Fatal(nil, "error-unmarshal-kv-result", log.Fields{"err": err, "key": kvPath, "value": value})
@@ -157,24 +159,20 @@
om.readAndLoadTPsToEtcd()
logger.Info(nil, "etcd-up-and-running--tp-loaded-successfully")
-
- if om.rsrMgr = NewResourceMgr("ABCD", om.testConfig.KVStoreHost+":"+strconv.Itoa(om.testConfig.KVStorePort),
- "etcd", "openolt", om.deviceInfo); om.rsrMgr == nil {
- logger.Error(nil, "Error while instantiating resource manager")
- return errors.New("instantiating resource manager failed")
- }
-
- om.TechProfile = make(map[uint32]*techprofile.TechProfileIf)
- if err = om.populateTechProfilePerPonPort(); err != nil {
- logger.Error(nil, "Error while populating tech profile mgr\n")
- return errors.New("error-loading-tech-profile-per-ponPort")
+ om.rsrMgr = make([]*OpenOltResourceMgr, om.deviceInfo.PonPorts)
+ for ponIdx := range om.rsrMgr {
+ if om.rsrMgr[ponIdx] = NewResourceMgr("ABCD", om.testConfig.KVStoreHost+":"+strconv.Itoa(om.testConfig.KVStorePort),
+ "etcd", "openolt", uint32(ponIdx), om.deviceInfo); om.rsrMgr == nil {
+ logger.Error(nil, "Error while instantiating resource manager")
+ return errors.New("instantiating resource manager failed")
+ }
}
// Start reading indications
go om.readIndications()
// Provision OLT NNI Trap flows as needed by the Workflow
- if err = ProvisionNniTrapFlow(om.openOltClient, om.testConfig, om.rsrMgr); err != nil {
+ if err = ProvisionNniTrapFlow(om.openOltClient, om.testConfig, om.rsrMgr[0]); err != nil {
logger.Error(nil, "failed-to-add-nni-trap-flow", log.Fields{"err": err})
}
@@ -205,8 +203,7 @@
func (om *OpenOltManager) provisionONUs() {
var numOfONUsPerPon uint
- var i, j, k, onuID uint32
- var err error
+ var i, j, k uint32
var onuWg sync.WaitGroup
defer func() {
@@ -255,14 +252,17 @@
sn := GenerateNextONUSerialNumber()
om.lockRsrAlloc.Unlock()
logger.Debugw(nil, "provisioning onu", log.Fields{"onuID": j, "ponPort": i, "serialNum": sn})
- if onuID, err = om.rsrMgr.GetONUID(j); err != nil {
+ ctx := context.Background()
+ newCtx := context.WithValue(ctx, "ponIf", i)
+ onuIDSl, err := om.rsrMgr[i].TechprofileRef.GetResourceID(newCtx, j, ponrmgr.ONU_ID, 1)
+ if err != nil {
logger.Errorw(nil, "error getting onu id", log.Fields{"err": err})
continue
}
- logger.Infow(nil, "onu-provision-started-from-olt-manager", log.Fields{"onuId": onuID, "ponIntf": i})
+ logger.Infow(nil, "onu-provision-started-from-olt-manager", log.Fields{"onuId": onuIDSl[0], "ponIntf": i})
onuWg.Add(1)
- go om.activateONU(j, onuID, sn, om.stringifySerialNumber(sn), &onuWg)
+ go om.activateONU(j, onuIDSl[0], sn, om.stringifySerialNumber(sn), &onuWg)
}
}
// Wait for the group of ONUs to complete processing before going to next batch of ONUs
@@ -295,7 +295,7 @@
PonIntf: intfID,
openOltClient: om.openOltClient,
testConfig: om.testConfig,
- rsrMgr: om.rsrMgr,
+ rsrMgr: om.rsrMgr[intfID],
onuWg: onuWg,
}
var err error
@@ -452,26 +452,6 @@
}
}
-func (om *OpenOltManager) populateTechProfilePerPonPort() error {
- var tpCount int
- for _, techRange := range om.deviceInfo.Ranges {
- for _, intfID := range techRange.IntfIds {
- om.TechProfile[intfID] = &(om.rsrMgr.ResourceMgrs[intfID].TechProfileMgr)
- tpCount++
- logger.Debugw(nil, "Init tech profile done", log.Fields{"intfID": intfID})
- }
- }
- //Make sure we have as many tech_profiles as there are pon ports on the device
- if tpCount != int(om.deviceInfo.GetPonPorts()) {
- logger.Errorw(nil, "Error while populating techprofile",
- log.Fields{"numofTech": tpCount, "numPonPorts": om.deviceInfo.GetPonPorts()})
- return errors.New("error while populating techprofile mgrs")
- }
- logger.Infow(nil, "Populated techprofile for ponports successfully",
- log.Fields{"numofTech": tpCount, "numPonPorts": om.deviceInfo.GetPonPorts()})
- return nil
-}
-
func isPowerOfTwo(numOfOnus uint) bool {
return (numOfOnus & (numOfOnus - 1)) == 0
}