Formatted code with 'go fmt'
Change-Id: I5361f3388a1fb8da1ef3222d51bc58355a804137
diff --git a/adaptercore/resourcemanager/resourcemanager.go b/adaptercore/resourcemanager/resourcemanager.go
index 7ed1d2c..2006315 100644
--- a/adaptercore/resourcemanager/resourcemanager.go
+++ b/adaptercore/resourcemanager/resourcemanager.go
@@ -17,291 +17,291 @@
package resourcemanager
import (
- "encoding/json"
- "errors"
- "fmt"
- "strconv"
- "strings"
+ "encoding/json"
+ "errors"
+ "fmt"
+ "strconv"
+ "strings"
- ponrmgr "github.com/opencord/voltha-go/common/ponresourcemanager"
- "github.com/opencord/voltha-go/common/log"
- "github.com/opencord/voltha-go/db/kvstore"
- "github.com/opencord/voltha-go/db/model"
- "github.com/opencord/voltha-protos/go/openolt"
+ "github.com/opencord/voltha-go/common/log"
+ ponrmgr "github.com/opencord/voltha-go/common/ponresourcemanager"
+ "github.com/opencord/voltha-go/db/kvstore"
+ "github.com/opencord/voltha-go/db/model"
+ "github.com/opencord/voltha-protos/go/openolt"
)
const KVSTORE_TIMEOUT = 5
const BASE_PATH_KV_STORE = "service/voltha/openolt/{%s}" // service/voltha/openolt/<device_id>
type OpenOltResourceMgr struct {
- DeviceID string //OLT device id
- HostAndPort string // Host and port of the kv store to connect to
- Args string // args
- KVStore *model.Backend // backend kv store connection handle
- DeviceType string
- Host string // Host ip of the kv store
- Port int // port of the kv store
- DevInfo *openolt.DeviceInfo // device information
- // array of pon resource managers per interface technology
- ResourceMgrs map[uint32]*ponrmgr.PONResourceManager
+ DeviceID string //OLT device id
+ HostAndPort string // Host and port of the kv store to connect to
+ Args string // args
+ KVStore *model.Backend // backend kv store connection handle
+ DeviceType string
+ Host string // Host ip of the kv store
+ Port int // port of the kv store
+ DevInfo *openolt.DeviceInfo // device information
+ // array of pon resource managers per interface technology
+ ResourceMgrs map[uint32]*ponrmgr.PONResourceManager
}
func newKVClient(storeType string, address string, timeout uint32) (kvstore.Client, error) {
- log.Infow("kv-store-type", log.Fields{"store": storeType})
- switch storeType {
- case "consul":
- return kvstore.NewConsulClient(address, int(timeout))
- case "etcd":
- return kvstore.NewEtcdClient(address, int(timeout))
- }
- return nil, errors.New("unsupported-kv-store")
+ log.Infow("kv-store-type", log.Fields{"store": storeType})
+ switch storeType {
+ case "consul":
+ return kvstore.NewConsulClient(address, int(timeout))
+ case "etcd":
+ return kvstore.NewEtcdClient(address, int(timeout))
+ }
+ return nil, errors.New("unsupported-kv-store")
}
func SetKVClient(Backend string, Host string, Port int, DeviceID string) *model.Backend {
- addr := Host + ":" + strconv.Itoa(Port)
- // TODO : Make sure direct call to NewBackend is working fine with backend , currently there is some
- // issue between kv store and backend , core is not calling NewBackend directly
- kvClient, err := newKVClient(Backend, addr, KVSTORE_TIMEOUT)
- if err != nil {
- log.Fatalw("Failed to init KV client\n", log.Fields{"err": err})
- return nil
- }
- kvbackend := &model.Backend{
- Client: kvClient,
- StoreType: Backend,
- Host: Host,
- Port: Port,
- Timeout: KVSTORE_TIMEOUT,
- PathPrefix: fmt.Sprintf(BASE_PATH_KV_STORE, DeviceID)}
+ addr := Host + ":" + strconv.Itoa(Port)
+ // TODO : Make sure direct call to NewBackend is working fine with backend , currently there is some
+ // issue between kv store and backend , core is not calling NewBackend directly
+ kvClient, err := newKVClient(Backend, addr, KVSTORE_TIMEOUT)
+ if err != nil {
+ log.Fatalw("Failed to init KV client\n", log.Fields{"err": err})
+ return nil
+ }
+ kvbackend := &model.Backend{
+ Client: kvClient,
+ StoreType: Backend,
+ Host: Host,
+ Port: Port,
+ Timeout: KVSTORE_TIMEOUT,
+ PathPrefix: fmt.Sprintf(BASE_PATH_KV_STORE, DeviceID)}
- return kvbackend
+ return kvbackend
}
func NewResourceMgr(DeviceID string, HostPort string, DeviceType string, DevInfo *openolt.DeviceInfo) *OpenOltResourceMgr {
- /* init a New resource maanger instance which in turn instantiates pon resource manager
- instances according to technology. Initializes the default resource ranges for all
- the reources.
- */
- var ResourceMgr OpenOltResourceMgr
- log.Debugf("Init new resource manager , host_port: %s, deviceid: %s", HostPort, DeviceID)
- ResourceMgr.HostAndPort = HostPort
- ResourceMgr.DeviceType = DeviceType
- ResourceMgr.DevInfo = DevInfo
- IpPort := strings.Split(HostPort, ":")
- ResourceMgr.Host = IpPort[0]
- ResourceMgr.Port, _ = strconv.Atoi(IpPort[1])
+ /* init a New resource maanger instance which in turn instantiates pon resource manager
+ instances according to technology. Initializes the default resource ranges for all
+ the reources.
+ */
+ var ResourceMgr OpenOltResourceMgr
+ log.Debugf("Init new resource manager , host_port: %s, deviceid: %s", HostPort, DeviceID)
+ ResourceMgr.HostAndPort = HostPort
+ ResourceMgr.DeviceType = DeviceType
+ ResourceMgr.DevInfo = DevInfo
+ IpPort := strings.Split(HostPort, ":")
+ ResourceMgr.Host = IpPort[0]
+ ResourceMgr.Port, _ = strconv.Atoi(IpPort[1])
- Backend := "etcd" /* TODO remove this once we get backend store from registry*/
- ResourceMgr.KVStore = SetKVClient(Backend, ResourceMgr.Host,
- ResourceMgr.Port, DeviceID)
- if ResourceMgr.KVStore == nil {
- log.Error("Failed to setup KV store")
- }
- Ranges := make(map[string]*openolt.DeviceInfo_DeviceResourceRanges)
- RsrcMgrsByTech := make(map[string]*ponrmgr.PONResourceManager)
- ResourceMgr.ResourceMgrs = make(map[uint32]*ponrmgr.PONResourceManager)
+ Backend := "etcd" /* TODO remove this once we get backend store from registry*/
+ ResourceMgr.KVStore = SetKVClient(Backend, ResourceMgr.Host,
+ ResourceMgr.Port, DeviceID)
+ if ResourceMgr.KVStore == nil {
+ log.Error("Failed to setup KV store")
+ }
+ Ranges := make(map[string]*openolt.DeviceInfo_DeviceResourceRanges)
+ RsrcMgrsByTech := make(map[string]*ponrmgr.PONResourceManager)
+ ResourceMgr.ResourceMgrs = make(map[uint32]*ponrmgr.PONResourceManager)
- // TODO self.args = registry('main').get_args()
+ // TODO self.args = registry('main').get_args()
- /*
- If a legacy driver returns protobuf without any ranges,s synthesize one from
- the legacy global per-device informaiton. This, in theory, is temporary until
- the legacy drivers are upgrade to support pool ranges.
- */
- if DevInfo.Ranges == nil {
- var ranges openolt.DeviceInfo_DeviceResourceRanges
- ranges.Technology = DevInfo.GetTechnology()
+ /*
+ If a legacy driver returns protobuf without any ranges,s synthesize one from
+ the legacy global per-device informaiton. This, in theory, is temporary until
+ the legacy drivers are upgrade to support pool ranges.
+ */
+ if DevInfo.Ranges == nil {
+ var ranges openolt.DeviceInfo_DeviceResourceRanges
+ ranges.Technology = DevInfo.GetTechnology()
- NumPONPorts := DevInfo.GetPonPorts()
- var index uint32
- for index = 0; index < NumPONPorts; index++ {
- ranges.IntfIds = append(ranges.IntfIds, index)
- }
+ NumPONPorts := DevInfo.GetPonPorts()
+ var index uint32
+ for index = 0; index < NumPONPorts; index++ {
+ ranges.IntfIds = append(ranges.IntfIds, index)
+ }
- var Pool *openolt.DeviceInfo_DeviceResourceRanges_Pool
- Pool.Type = openolt.DeviceInfo_DeviceResourceRanges_Pool_ONU_ID
- Pool.Start = DevInfo.OnuIdStart
- Pool.End = DevInfo.OnuIdEnd
- Pool.Sharing = openolt.DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF
- ranges.Pools = append(ranges.Pools, Pool)
+ var Pool *openolt.DeviceInfo_DeviceResourceRanges_Pool
+ Pool.Type = openolt.DeviceInfo_DeviceResourceRanges_Pool_ONU_ID
+ Pool.Start = DevInfo.OnuIdStart
+ Pool.End = DevInfo.OnuIdEnd
+ Pool.Sharing = openolt.DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF
+ ranges.Pools = append(ranges.Pools, Pool)
- Pool.Type = openolt.DeviceInfo_DeviceResourceRanges_Pool_ALLOC_ID
- Pool.Start = DevInfo.AllocIdStart
- Pool.End = DevInfo.AllocIdEnd
- Pool.Sharing = openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH
- ranges.Pools = append(ranges.Pools, Pool)
+ Pool.Type = openolt.DeviceInfo_DeviceResourceRanges_Pool_ALLOC_ID
+ Pool.Start = DevInfo.AllocIdStart
+ Pool.End = DevInfo.AllocIdEnd
+ Pool.Sharing = openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH
+ ranges.Pools = append(ranges.Pools, Pool)
- Pool.Type = openolt.DeviceInfo_DeviceResourceRanges_Pool_GEMPORT_ID
- Pool.Start = DevInfo.GemportIdStart
- Pool.End = DevInfo.GemportIdEnd
- Pool.Sharing = openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH
- ranges.Pools = append(ranges.Pools, Pool)
+ Pool.Type = openolt.DeviceInfo_DeviceResourceRanges_Pool_GEMPORT_ID
+ Pool.Start = DevInfo.GemportIdStart
+ Pool.End = DevInfo.GemportIdEnd
+ Pool.Sharing = openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH
+ ranges.Pools = append(ranges.Pools, Pool)
- Pool.Type = openolt.DeviceInfo_DeviceResourceRanges_Pool_FLOW_ID
- Pool.Start = DevInfo.FlowIdStart
- Pool.End = DevInfo.FlowIdEnd
- Pool.Sharing = openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH
- ranges.Pools = append(ranges.Pools, Pool)
- }
+ Pool.Type = openolt.DeviceInfo_DeviceResourceRanges_Pool_FLOW_ID
+ Pool.Start = DevInfo.FlowIdStart
+ Pool.End = DevInfo.FlowIdEnd
+ Pool.Sharing = openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH
+ ranges.Pools = append(ranges.Pools, Pool)
+ }
- //Create a separate Resource Manager instance for each range. This assumes that
- // each technology is represented by only a single range
- var GlobalPONRsrcMgr *ponrmgr.PONResourceManager
- var err error
- for _, TechRange := range DevInfo.Ranges {
- technology := TechRange.Technology
- log.Debugf("Device info technology %s", technology)
- Ranges[technology] = TechRange
- RsrcMgrsByTech[technology], err = ponrmgr.NewPONResourceManager(technology, DeviceType, DeviceID,
- Backend, ResourceMgr.Host, ResourceMgr.Port)
- if err != nil {
- log.Errorf("Failed to create pon resource manager instacnce for technology %s", technology)
- return nil
- }
- //resource_mgrs_by_tech[technology] = resource_mgr
- if GlobalPONRsrcMgr == nil {
- GlobalPONRsrcMgr = RsrcMgrsByTech[technology]
- }
- for IntfId := range TechRange.IntfIds {
- ResourceMgr.ResourceMgrs[uint32(IntfId)] = RsrcMgrsByTech[technology]
- }
- //self.initialize_device_resource_range_and_pool(resource_mgr, global_resource_mgr, arange)
- InitializeDeviceResourceRangeAndPool(RsrcMgrsByTech[technology], GlobalPONRsrcMgr,
- TechRange, DevInfo)
- }
- // After we have initialized resource ranges, initialize the
- // resource pools accordingly.
- for _, PONRMgr := range RsrcMgrsByTech {
- PONRMgr.InitDeviceResourcePool()
- }
- return &ResourceMgr
+ //Create a separate Resource Manager instance for each range. This assumes that
+ // each technology is represented by only a single range
+ var GlobalPONRsrcMgr *ponrmgr.PONResourceManager
+ var err error
+ for _, TechRange := range DevInfo.Ranges {
+ technology := TechRange.Technology
+ log.Debugf("Device info technology %s", technology)
+ Ranges[technology] = TechRange
+ RsrcMgrsByTech[technology], err = ponrmgr.NewPONResourceManager(technology, DeviceType, DeviceID,
+ Backend, ResourceMgr.Host, ResourceMgr.Port)
+ if err != nil {
+ log.Errorf("Failed to create pon resource manager instacnce for technology %s", technology)
+ return nil
+ }
+ //resource_mgrs_by_tech[technology] = resource_mgr
+ if GlobalPONRsrcMgr == nil {
+ GlobalPONRsrcMgr = RsrcMgrsByTech[technology]
+ }
+ for IntfId := range TechRange.IntfIds {
+ ResourceMgr.ResourceMgrs[uint32(IntfId)] = RsrcMgrsByTech[technology]
+ }
+ //self.initialize_device_resource_range_and_pool(resource_mgr, global_resource_mgr, arange)
+ InitializeDeviceResourceRangeAndPool(RsrcMgrsByTech[technology], GlobalPONRsrcMgr,
+ TechRange, DevInfo)
+ }
+ // After we have initialized resource ranges, initialize the
+ // resource pools accordingly.
+ for _, PONRMgr := range RsrcMgrsByTech {
+ PONRMgr.InitDeviceResourcePool()
+ }
+ return &ResourceMgr
}
func InitializeDeviceResourceRangeAndPool(PONRMgr *ponrmgr.PONResourceManager, GlobalPONRMgr *ponrmgr.PONResourceManager,
- TechRange *openolt.DeviceInfo_DeviceResourceRanges, DevInfo *openolt.DeviceInfo) {
+ TechRange *openolt.DeviceInfo_DeviceResourceRanges, DevInfo *openolt.DeviceInfo) {
- // init the resource range pool according to the sharing type
+ // init the resource range pool according to the sharing type
- log.Debugf("Resource range pool init for technology %s", PONRMgr.Technology)
- //first load from KV profiles
- status := PONRMgr.InitResourceRangesFromKVStore()
- if status == false {
- log.Debugf("Failed to load resource ranges from KV store for tech %s", PONRMgr.Technology)
- }
+ log.Debugf("Resource range pool init for technology %s", PONRMgr.Technology)
+ //first load from KV profiles
+ status := PONRMgr.InitResourceRangesFromKVStore()
+ if status == false {
+ log.Debugf("Failed to load resource ranges from KV store for tech %s", PONRMgr.Technology)
+ }
- /*
- Then apply device specific information. If KV doesn't exist
- or is broader than the device, the device's informationw ill
- dictate the range limits
- */
- log.Debugf("Using device info to init pon resource ranges for tech", PONRMgr.Technology)
+ /*
+ Then apply device specific information. If KV doesn't exist
+ or is broader than the device, the device's informationw ill
+ dictate the range limits
+ */
+ log.Debugf("Using device info to init pon resource ranges for tech", PONRMgr.Technology)
- ONUIDStart := DevInfo.OnuIdStart
- ONUIDEnd := DevInfo.OnuIdEnd
- ONUIDShared := openolt.DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF
- ONUIDSharedPoolID := uint32(0)
- AllocIDStart := DevInfo.AllocIdStart
- AllocIDEnd := DevInfo.AllocIdEnd
- AllocIDShared := openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH // TODO EdgeCore/BAL limitation
- AllocIDSharedPoolID := uint32(0)
- GEMPortIDStart := DevInfo.GemportIdStart
- GEMPortIDEnd := DevInfo.GemportIdEnd
- GEMPortIDShared := openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH // TODO EdgeCore/BAL limitation
- GEMPortIDSharedPoolID := uint32(0)
- FlowIDStart := DevInfo.FlowIdStart
- FlowIDEnd := DevInfo.FlowIdEnd
- FlowIDShared := openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH // TODO EdgeCore/BAL limitation
- FlowIDSharedPoolID := uint32(0)
+ ONUIDStart := DevInfo.OnuIdStart
+ ONUIDEnd := DevInfo.OnuIdEnd
+ ONUIDShared := openolt.DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF
+ ONUIDSharedPoolID := uint32(0)
+ AllocIDStart := DevInfo.AllocIdStart
+ AllocIDEnd := DevInfo.AllocIdEnd
+ AllocIDShared := openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH // TODO EdgeCore/BAL limitation
+ AllocIDSharedPoolID := uint32(0)
+ GEMPortIDStart := DevInfo.GemportIdStart
+ GEMPortIDEnd := DevInfo.GemportIdEnd
+ GEMPortIDShared := openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH // TODO EdgeCore/BAL limitation
+ GEMPortIDSharedPoolID := uint32(0)
+ FlowIDStart := DevInfo.FlowIdStart
+ FlowIDEnd := DevInfo.FlowIdEnd
+ FlowIDShared := openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH // TODO EdgeCore/BAL limitation
+ FlowIDSharedPoolID := uint32(0)
- var GlobalPoolID uint32
- var FirstIntfPoolID uint32
- var SharedPoolID uint32
+ var GlobalPoolID uint32
+ var FirstIntfPoolID uint32
+ var SharedPoolID uint32
- for _, FirstIntfPoolID = range TechRange.IntfIds {
- break
- }
+ for _, FirstIntfPoolID = range TechRange.IntfIds {
+ break
+ }
- for _, RangePool := range TechRange.Pools {
- if RangePool.Sharing == openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH {
- SharedPoolID = GlobalPoolID
- } else if RangePool.Sharing == openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_SAME_TECH {
- SharedPoolID = FirstIntfPoolID
- } else {
- SharedPoolID = 0
- }
- if RangePool.Type == openolt.DeviceInfo_DeviceResourceRanges_Pool_ONU_ID {
- ONUIDStart = RangePool.Start
- ONUIDEnd = RangePool.End
- ONUIDShared = RangePool.Sharing
- ONUIDSharedPoolID = SharedPoolID
- } else if RangePool.Type == openolt.DeviceInfo_DeviceResourceRanges_Pool_ALLOC_ID {
- AllocIDStart = RangePool.Start
- AllocIDEnd = RangePool.End
- AllocIDShared = RangePool.Sharing
- AllocIDSharedPoolID = SharedPoolID
- } else if RangePool.Type == openolt.DeviceInfo_DeviceResourceRanges_Pool_GEMPORT_ID {
- GEMPortIDStart = RangePool.Start
- GEMPortIDEnd = RangePool.End
- GEMPortIDShared = RangePool.Sharing
- GEMPortIDSharedPoolID = SharedPoolID
- } else if RangePool.Type == openolt.DeviceInfo_DeviceResourceRanges_Pool_FLOW_ID {
- FlowIDStart = RangePool.Start
- FlowIDEnd = RangePool.End
- FlowIDShared = RangePool.Sharing
- FlowIDSharedPoolID = SharedPoolID
- }
- }
+ for _, RangePool := range TechRange.Pools {
+ if RangePool.Sharing == openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH {
+ SharedPoolID = GlobalPoolID
+ } else if RangePool.Sharing == openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_SAME_TECH {
+ SharedPoolID = FirstIntfPoolID
+ } else {
+ SharedPoolID = 0
+ }
+ if RangePool.Type == openolt.DeviceInfo_DeviceResourceRanges_Pool_ONU_ID {
+ ONUIDStart = RangePool.Start
+ ONUIDEnd = RangePool.End
+ ONUIDShared = RangePool.Sharing
+ ONUIDSharedPoolID = SharedPoolID
+ } else if RangePool.Type == openolt.DeviceInfo_DeviceResourceRanges_Pool_ALLOC_ID {
+ AllocIDStart = RangePool.Start
+ AllocIDEnd = RangePool.End
+ AllocIDShared = RangePool.Sharing
+ AllocIDSharedPoolID = SharedPoolID
+ } else if RangePool.Type == openolt.DeviceInfo_DeviceResourceRanges_Pool_GEMPORT_ID {
+ GEMPortIDStart = RangePool.Start
+ GEMPortIDEnd = RangePool.End
+ GEMPortIDShared = RangePool.Sharing
+ GEMPortIDSharedPoolID = SharedPoolID
+ } else if RangePool.Type == openolt.DeviceInfo_DeviceResourceRanges_Pool_FLOW_ID {
+ FlowIDStart = RangePool.Start
+ FlowIDEnd = RangePool.End
+ FlowIDShared = RangePool.Sharing
+ FlowIDSharedPoolID = SharedPoolID
+ }
+ }
- log.Debugw("Device info init", log.Fields{"technology": TechRange.Technology,
- "onu_id_start": ONUIDStart, "onu_id_end": ONUIDEnd, "onu_id_shared_pool_id": ONUIDSharedPoolID,
- "alloc_id_start": AllocIDStart, "alloc_id_end": AllocIDEnd,
- "alloc_id_shared_pool_id": AllocIDSharedPoolID,
- "gemport_id_start": GEMPortIDStart, "gemport_id_end": GEMPortIDEnd,
- "gemport_id_shared_pool_id": GEMPortIDSharedPoolID,
- "flow_id_start": FlowIDStart,
- "flow_id_end_idx": FlowIDEnd,
- "flow_id_shared_pool_id": FlowIDSharedPoolID,
- "intf_ids": TechRange.IntfIds,
- "uni_id_start": 0,
- "uni_id_end_idx":/*MaxUNIIDperONU()*/ 1})
+ log.Debugw("Device info init", log.Fields{"technology": TechRange.Technology,
+ "onu_id_start": ONUIDStart, "onu_id_end": ONUIDEnd, "onu_id_shared_pool_id": ONUIDSharedPoolID,
+ "alloc_id_start": AllocIDStart, "alloc_id_end": AllocIDEnd,
+ "alloc_id_shared_pool_id": AllocIDSharedPoolID,
+ "gemport_id_start": GEMPortIDStart, "gemport_id_end": GEMPortIDEnd,
+ "gemport_id_shared_pool_id": GEMPortIDSharedPoolID,
+ "flow_id_start": FlowIDStart,
+ "flow_id_end_idx": FlowIDEnd,
+ "flow_id_shared_pool_id": FlowIDSharedPoolID,
+ "intf_ids": TechRange.IntfIds,
+ "uni_id_start": 0,
+ "uni_id_end_idx":/*MaxUNIIDperONU()*/ 1})
- PONRMgr.InitDefaultPONResourceRanges(ONUIDStart, ONUIDEnd, ONUIDSharedPoolID,
- AllocIDStart, AllocIDEnd, AllocIDSharedPoolID,
- GEMPortIDStart, GEMPortIDEnd, GEMPortIDSharedPoolID,
- FlowIDStart, FlowIDEnd, FlowIDSharedPoolID, 0, 1,
- DevInfo.PonPorts, TechRange.IntfIds)
+ PONRMgr.InitDefaultPONResourceRanges(ONUIDStart, ONUIDEnd, ONUIDSharedPoolID,
+ AllocIDStart, AllocIDEnd, AllocIDSharedPoolID,
+ GEMPortIDStart, GEMPortIDEnd, GEMPortIDSharedPoolID,
+ FlowIDStart, FlowIDEnd, FlowIDSharedPoolID, 0, 1,
+ DevInfo.PonPorts, TechRange.IntfIds)
- // For global sharing, make sure to refresh both local and global resource manager instances' range
+ // For global sharing, make sure to refresh both local and global resource manager instances' range
- if ONUIDShared == openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH {
- GlobalPONRMgr.UpdateRanges(ponrmgr.ONU_ID_START_IDX, ONUIDStart, ponrmgr.ONU_ID_END_IDX, ONUIDEnd,
- "", 0, nil)
- PONRMgr.UpdateRanges(ponrmgr.ONU_ID_START_IDX, ONUIDStart, ponrmgr.ONU_ID_END_IDX, ONUIDEnd,
- "", 0, GlobalPONRMgr)
- }
- if AllocIDShared == openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH {
- GlobalPONRMgr.UpdateRanges(ponrmgr.ALLOC_ID_START_IDX, AllocIDStart, ponrmgr.ALLOC_ID_END_IDX, AllocIDEnd,
- "", 0, nil)
+ if ONUIDShared == openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH {
+ GlobalPONRMgr.UpdateRanges(ponrmgr.ONU_ID_START_IDX, ONUIDStart, ponrmgr.ONU_ID_END_IDX, ONUIDEnd,
+ "", 0, nil)
+ PONRMgr.UpdateRanges(ponrmgr.ONU_ID_START_IDX, ONUIDStart, ponrmgr.ONU_ID_END_IDX, ONUIDEnd,
+ "", 0, GlobalPONRMgr)
+ }
+ if AllocIDShared == openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH {
+ GlobalPONRMgr.UpdateRanges(ponrmgr.ALLOC_ID_START_IDX, AllocIDStart, ponrmgr.ALLOC_ID_END_IDX, AllocIDEnd,
+ "", 0, nil)
- PONRMgr.UpdateRanges(ponrmgr.ALLOC_ID_START_IDX, AllocIDStart, ponrmgr.ALLOC_ID_END_IDX, AllocIDEnd,
- "", 0, GlobalPONRMgr)
- }
- if GEMPortIDShared == openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH {
- GlobalPONRMgr.UpdateRanges(ponrmgr.GEMPORT_ID_START_IDX, GEMPortIDStart, ponrmgr.GEMPORT_ID_END_IDX, GEMPortIDEnd,
- "", 0, nil)
- PONRMgr.UpdateRanges(ponrmgr.GEMPORT_ID_START_IDX, GEMPortIDStart, ponrmgr.GEMPORT_ID_END_IDX, GEMPortIDEnd,
- "", 0, GlobalPONRMgr)
- }
- if FlowIDShared == openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH {
- GlobalPONRMgr.UpdateRanges(ponrmgr.FLOW_ID_START_IDX, FlowIDStart, ponrmgr.FLOW_ID_END_IDX, FlowIDEnd,
- "", 0, nil)
- PONRMgr.UpdateRanges(ponrmgr.FLOW_ID_START_IDX, FlowIDStart, ponrmgr.FLOW_ID_END_IDX, FlowIDEnd,
- "", 0, GlobalPONRMgr)
- }
+ PONRMgr.UpdateRanges(ponrmgr.ALLOC_ID_START_IDX, AllocIDStart, ponrmgr.ALLOC_ID_END_IDX, AllocIDEnd,
+ "", 0, GlobalPONRMgr)
+ }
+ if GEMPortIDShared == openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH {
+ GlobalPONRMgr.UpdateRanges(ponrmgr.GEMPORT_ID_START_IDX, GEMPortIDStart, ponrmgr.GEMPORT_ID_END_IDX, GEMPortIDEnd,
+ "", 0, nil)
+ PONRMgr.UpdateRanges(ponrmgr.GEMPORT_ID_START_IDX, GEMPortIDStart, ponrmgr.GEMPORT_ID_END_IDX, GEMPortIDEnd,
+ "", 0, GlobalPONRMgr)
+ }
+ if FlowIDShared == openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH {
+ GlobalPONRMgr.UpdateRanges(ponrmgr.FLOW_ID_START_IDX, FlowIDStart, ponrmgr.FLOW_ID_END_IDX, FlowIDEnd,
+ "", 0, nil)
+ PONRMgr.UpdateRanges(ponrmgr.FLOW_ID_START_IDX, FlowIDStart, ponrmgr.FLOW_ID_END_IDX, FlowIDEnd,
+ "", 0, GlobalPONRMgr)
+ }
- // Make sure loaded range fits the platform bit encoding ranges
- PONRMgr.UpdateRanges(ponrmgr.UNI_ID_START_IDX, 0, ponrmgr.UNI_ID_END_IDX /* TODO =OpenOltPlatform.MAX_UNIS_PER_ONU-1*/, 1, "", 0, nil)
+ // Make sure loaded range fits the platform bit encoding ranges
+ PONRMgr.UpdateRanges(ponrmgr.UNI_ID_START_IDX, 0, ponrmgr.UNI_ID_END_IDX /* TODO =OpenOltPlatform.MAX_UNIS_PER_ONU-1*/, 1, "", 0, nil)
}
/* TODO
@@ -328,293 +328,293 @@
func (RsrcMgr *OpenOltResourceMgr) GetONUID(PONIntfID uint32) (uint32, error) {
- // Get ONU id for a provided pon interface ID.
+ // Get ONU id for a provided pon interface ID.
- ONUID, err := RsrcMgr.ResourceMgrs[PONIntfID].GetResourceID(PONIntfID,
- ponrmgr.ONU_ID, 1)
- if err != nil {
- log.Errorf("Failed to get resource for interface %d for type %s",
- PONIntfID, ponrmgr.ONU_ID)
- return ONUID[0], err
- }
- if ONUID != nil {
- RsrcMgr.ResourceMgrs[PONIntfID].InitResourceMap(fmt.Sprintf("%d,%d", PONIntfID, ONUID))
- }
+ ONUID, err := RsrcMgr.ResourceMgrs[PONIntfID].GetResourceID(PONIntfID,
+ ponrmgr.ONU_ID, 1)
+ if err != nil {
+ log.Errorf("Failed to get resource for interface %d for type %s",
+ PONIntfID, ponrmgr.ONU_ID)
+ return ONUID[0], err
+ }
+ if ONUID != nil {
+ RsrcMgr.ResourceMgrs[PONIntfID].InitResourceMap(fmt.Sprintf("%d,%d", PONIntfID, ONUID))
+ }
- return ONUID[0], err
+ return ONUID[0], err
}
func (RsrcMgr *OpenOltResourceMgr) GetFlowID(PONIntfID uint32, ONUID uint32, UNIID uint32,
- FlowStoreCookie interface{},
- FlowCategory interface{}) (uint32, error) {
+ FlowStoreCookie interface{},
+ FlowCategory interface{}) (uint32, error) {
- // Get flow ID for a given pon interface id, onu id and uni id.
+ // Get flow ID for a given pon interface id, onu id and uni id.
- var err error
- FlowPath := fmt.Sprintf("%d,%d,%d", PONIntfID, ONUID, UNIID)
- FlowIDs := RsrcMgr.ResourceMgrs[PONIntfID].GetCurrentFlowIDsForOnu(FlowPath)
- if FlowIDs != nil {
- /* TODO once the flow id info structure is known
- for Flow := range FlowIDs {
- FlowInfo := RsrcMgr.ResourceMgrs[PONIntfID].GetFlowIDInfo(FlowPath, Flow)
- for Info := range FlowInfo {
- if FlowCategory != nil &&
- Info[FlowCategory] == FlowCategory {
- return 0, Flow
- }
- if FlowStoreCookie != nil &&
- Info[FlowStoreCookie] == FlowStoreCookie {
- return 0, Flow
- }
- }
- }
- */
- }
- FlowIDs, err = RsrcMgr.ResourceMgrs[PONIntfID].GetResourceID(PONIntfID,
- ponrmgr.FLOW_ID, 1)
- if err != nil {
- log.Errorf("Failed to get resource for interface %d for type %s",
- PONIntfID, ponrmgr.FLOW_ID)
- return FlowIDs[0], err
- }
- if FlowIDs != nil {
- RsrcMgr.ResourceMgrs[PONIntfID].UpdateFlowIDForOnu(FlowPath, FlowIDs[0], true)
- }
+ var err error
+ FlowPath := fmt.Sprintf("%d,%d,%d", PONIntfID, ONUID, UNIID)
+ FlowIDs := RsrcMgr.ResourceMgrs[PONIntfID].GetCurrentFlowIDsForOnu(FlowPath)
+ if FlowIDs != nil {
+ /* TODO once the flow id info structure is known
+ for Flow := range FlowIDs {
+ FlowInfo := RsrcMgr.ResourceMgrs[PONIntfID].GetFlowIDInfo(FlowPath, Flow)
+ for Info := range FlowInfo {
+ if FlowCategory != nil &&
+ Info[FlowCategory] == FlowCategory {
+ return 0, Flow
+ }
+ if FlowStoreCookie != nil &&
+ Info[FlowStoreCookie] == FlowStoreCookie {
+ return 0, Flow
+ }
+ }
+ }
+ */
+ }
+ FlowIDs, err = RsrcMgr.ResourceMgrs[PONIntfID].GetResourceID(PONIntfID,
+ ponrmgr.FLOW_ID, 1)
+ if err != nil {
+ log.Errorf("Failed to get resource for interface %d for type %s",
+ PONIntfID, ponrmgr.FLOW_ID)
+ return FlowIDs[0], err
+ }
+ if FlowIDs != nil {
+ RsrcMgr.ResourceMgrs[PONIntfID].UpdateFlowIDForOnu(FlowPath, FlowIDs[0], true)
+ }
- return FlowIDs[0], err
+ return FlowIDs[0], err
}
func (RsrcMgr *OpenOltResourceMgr) GetAllocID(IntfID uint32, ONUID uint32) uint32 {
- // Get alloc id for a given pon interface id and onu id.
- var err error
- IntfONUID := fmt.Sprintf("%d,%d", IntfID, ONUID)
- AllocID := RsrcMgr.ResourceMgrs[IntfID].GetCurrentAllocIDForOnu(IntfONUID)
- if AllocID != nil {
- // Since we support only one alloc_id for the ONU at the moment,
- // return the first alloc_id in the list, if available, for that
- // ONU.
- return AllocID[0]
- }
- AllocID, err = RsrcMgr.ResourceMgrs[IntfID].GetResourceID(IntfID,
- ponrmgr.ALLOC_ID, 1)
+ // Get alloc id for a given pon interface id and onu id.
+ var err error
+ IntfONUID := fmt.Sprintf("%d,%d", IntfID, ONUID)
+ AllocID := RsrcMgr.ResourceMgrs[IntfID].GetCurrentAllocIDForOnu(IntfONUID)
+ if AllocID != nil {
+ // Since we support only one alloc_id for the ONU at the moment,
+ // return the first alloc_id in the list, if available, for that
+ // ONU.
+ return AllocID[0]
+ }
+ AllocID, err = RsrcMgr.ResourceMgrs[IntfID].GetResourceID(IntfID,
+ ponrmgr.ALLOC_ID, 1)
- if AllocID == nil || err != nil {
- log.Error("Failed to allocate alloc id")
- return 0
- }
- // update the resource map on KV store with the list of alloc_id
- // allocated for the pon_intf_onu_id tuple
- err = RsrcMgr.ResourceMgrs[IntfID].UpdateAllocIdsForOnu(IntfONUID, AllocID)
- if err != nil {
- log.Error("Failed to update Alloc ID")
- return 0
- }
- return AllocID[0]
+ if AllocID == nil || err != nil {
+ log.Error("Failed to allocate alloc id")
+ return 0
+ }
+ // update the resource map on KV store with the list of alloc_id
+ // allocated for the pon_intf_onu_id tuple
+ err = RsrcMgr.ResourceMgrs[IntfID].UpdateAllocIdsForOnu(IntfONUID, AllocID)
+ if err != nil {
+ log.Error("Failed to update Alloc ID")
+ return 0
+ }
+ return AllocID[0]
}
func (RsrcMgr *OpenOltResourceMgr) UpdateAllocIdsForOnu(PONPort uint32, ONUID uint32,
- UNIID uint32, AllocID []uint32) error {
+ UNIID uint32, AllocID []uint32) error {
- /* update alloc ids in kv store for a given pon interface id,
- onu id and uni id.
- */
- IntfONUID := fmt.Sprintf("%d,%d,%d", PONPort, ONUID, UNIID)
- return RsrcMgr.ResourceMgrs[PONPort].UpdateAllocIdsForOnu(IntfONUID,
- AllocID)
+ /* update alloc ids in kv store for a given pon interface id,
+ onu id and uni id.
+ */
+ IntfONUID := fmt.Sprintf("%d,%d,%d", PONPort, ONUID, UNIID)
+ return RsrcMgr.ResourceMgrs[PONPort].UpdateAllocIdsForOnu(IntfONUID,
+ AllocID)
}
func (RsrcMgr *OpenOltResourceMgr) GetCurrentGEMPortIDsForOnu(IntfID uint32, ONUID uint32,
- UNIID uint32) []uint32 {
+ UNIID uint32) []uint32 {
- /* Get gem ports for given pon interface , onu id and uni id. */
+ /* Get gem ports for given pon interface , onu id and uni id. */
- IntfONUID := fmt.Sprintf("%d,%d,%d", IntfID, ONUID, UNIID)
- GEMPortID := RsrcMgr.ResourceMgrs[IntfID].GetCurrentGEMPortIDsForOnu(IntfONUID)
- if GEMPortID != nil {
- // Since we support only one alloc_id for the ONU at the moment,
- // return the first alloc_id in the list, if available, for that
- // ONU.
- return GEMPortID
- }
- return nil
+ IntfONUID := fmt.Sprintf("%d,%d,%d", IntfID, ONUID, UNIID)
+ GEMPortID := RsrcMgr.ResourceMgrs[IntfID].GetCurrentGEMPortIDsForOnu(IntfONUID)
+ if GEMPortID != nil {
+ // Since we support only one alloc_id for the ONU at the moment,
+ // return the first alloc_id in the list, if available, for that
+ // ONU.
+ return GEMPortID
+ }
+ return nil
}
func (RsrcMgr *OpenOltResourceMgr) GetCurrentAllocIDForOnu(IntfID uint32, ONUID uint32) uint32 {
- /* Get alloc ids for given pon interface and onu id. */
+ /* Get alloc ids for given pon interface and onu id. */
- IntfONUID := fmt.Sprintf("%d,%d", IntfID, ONUID)
- AllocID := RsrcMgr.ResourceMgrs[IntfID].GetCurrentAllocIDForOnu(IntfONUID)
- if AllocID != nil {
- // Since we support only one alloc_id for the ONU at the moment,
- // return the first alloc_id in the list, if available, for that
- // ONU.
- return AllocID[0]
- }
- return 0
+ IntfONUID := fmt.Sprintf("%d,%d", IntfID, ONUID)
+ AllocID := RsrcMgr.ResourceMgrs[IntfID].GetCurrentAllocIDForOnu(IntfONUID)
+ if AllocID != nil {
+ // Since we support only one alloc_id for the ONU at the moment,
+ // return the first alloc_id in the list, if available, for that
+ // ONU.
+ return AllocID[0]
+ }
+ return 0
}
func (RsrcMgr *OpenOltResourceMgr) UpdateGEMportsPonportToOnuMapOnKVStore(GEMPorts []uint32, PonPort uint32,
- ONUID uint32, UNIID uint32) error {
+ ONUID uint32, UNIID uint32) error {
- /* Update onu and uni id associated with the gem port to the kv store. */
- var IntfGEMPortPath string
- Data := fmt.Sprintf("%d %d", ONUID, UNIID)
- for _, GEM := range GEMPorts {
- IntfGEMPortPath = fmt.Sprintf("%d,%d", PonPort, GEM)
- Val, err := json.Marshal(Data)
- if err != nil {
- log.Error("failed to Marshal")
- return err
- }
- // This information is used when packet_indication is received and
- // we need to derive the ONU Id for which the packet arrived based
- // on the pon_intf and gemport available in the packet_indication
- if err = RsrcMgr.KVStore.Put(IntfGEMPortPath, Val); err != nil {
- log.Errorf("Failed to update resource %s", IntfGEMPortPath)
- return err
- }
- }
- return nil
+ /* Update onu and uni id associated with the gem port to the kv store. */
+ var IntfGEMPortPath string
+ Data := fmt.Sprintf("%d %d", ONUID, UNIID)
+ for _, GEM := range GEMPorts {
+ IntfGEMPortPath = fmt.Sprintf("%d,%d", PonPort, GEM)
+ Val, err := json.Marshal(Data)
+ if err != nil {
+ log.Error("failed to Marshal")
+ return err
+ }
+ // This information is used when packet_indication is received and
+ // we need to derive the ONU Id for which the packet arrived based
+ // on the pon_intf and gemport available in the packet_indication
+ if err = RsrcMgr.KVStore.Put(IntfGEMPortPath, Val); err != nil {
+ log.Errorf("Failed to update resource %s", IntfGEMPortPath)
+ return err
+ }
+ }
+ return nil
}
func (RsrcMgr *OpenOltResourceMgr) GetONUUNIfromPONPortGEMPort(PONPort uint32, GEMPort uint32) []uint32 {
- /* get the onu and uni id for a given gem port. */
- IntfGEMPortPath := fmt.Sprintf("%d,%d", PONPort, GEMPort)
- var GEMPortIDs []uint32
- var Data string
- Value, err := RsrcMgr.KVStore.Get(IntfGEMPortPath)
- if err == nil {
- if Value != nil {
- Val, _ := kvstore.ToByte(Value.Value)
- if err = json.Unmarshal(Val, &Data); err != nil {
- log.Error("Failed to unmarshal")
- return nil
- }
- IDs := strings.Split(Data, " ")
- for _, port := range IDs {
- Intport, _ := strconv.Atoi(port)
- GEMPortIDs = append(GEMPortIDs, uint32(Intport))
- }
- }
- }
- return GEMPortIDs
+ /* get the onu and uni id for a given gem port. */
+ IntfGEMPortPath := fmt.Sprintf("%d,%d", PONPort, GEMPort)
+ var GEMPortIDs []uint32
+ var Data string
+ Value, err := RsrcMgr.KVStore.Get(IntfGEMPortPath)
+ if err == nil {
+ if Value != nil {
+ Val, _ := kvstore.ToByte(Value.Value)
+ if err = json.Unmarshal(Val, &Data); err != nil {
+ log.Error("Failed to unmarshal")
+ return nil
+ }
+ IDs := strings.Split(Data, " ")
+ for _, port := range IDs {
+ Intport, _ := strconv.Atoi(port)
+ GEMPortIDs = append(GEMPortIDs, uint32(Intport))
+ }
+ }
+ }
+ return GEMPortIDs
}
func (RsrcMgr *OpenOltResourceMgr) GetGEMPortID(PONPort uint32, ONUID uint32,
- UNIID uint32, NumOfPorts uint32) ([]uint32, error) {
+ UNIID uint32, NumOfPorts uint32) ([]uint32, error) {
- /* Get gem port id for a particular pon port, onu id
- and uni id.
- */
+ /* Get gem port id for a particular pon port, onu id
+ and uni id.
+ */
- var err error
- IntfONUID := fmt.Sprintf("%d,%d,%d", PONPort, ONUID, UNIID)
+ var err error
+ IntfONUID := fmt.Sprintf("%d,%d,%d", PONPort, ONUID, UNIID)
- GEMPortList := RsrcMgr.ResourceMgrs[PONPort].GetCurrentGEMPortIDsForOnu(IntfONUID)
- if GEMPortList != nil {
- return GEMPortList, nil
- }
+ GEMPortList := RsrcMgr.ResourceMgrs[PONPort].GetCurrentGEMPortIDsForOnu(IntfONUID)
+ if GEMPortList != nil {
+ return GEMPortList, nil
+ }
- GEMPortList, err = RsrcMgr.ResourceMgrs[PONPort].GetResourceID(PONPort,
- ponrmgr.GEMPORT_ID, NumOfPorts)
- if err != nil && GEMPortList == nil {
- log.Errorf("Failed to get gem port id for %s", IntfONUID)
- return nil, err
- }
+ GEMPortList, err = RsrcMgr.ResourceMgrs[PONPort].GetResourceID(PONPort,
+ ponrmgr.GEMPORT_ID, NumOfPorts)
+ if err != nil && GEMPortList == nil {
+ log.Errorf("Failed to get gem port id for %s", IntfONUID)
+ return nil, err
+ }
- // update the resource map on KV store with the list of gemport_id
- // allocated for the pon_intf_onu_id tuple
- err = RsrcMgr.ResourceMgrs[PONPort].UpdateGEMPortIDsForOnu(IntfONUID,
- GEMPortList)
- if err != nil {
- log.Errorf("Failed to update GEM ports to kv store for %s", IntfONUID)
- return nil, err
- }
- RsrcMgr.UpdateGEMportsPonportToOnuMapOnKVStore(GEMPortList, PONPort,
- ONUID, UNIID)
- return GEMPortList, err
+ // update the resource map on KV store with the list of gemport_id
+ // allocated for the pon_intf_onu_id tuple
+ err = RsrcMgr.ResourceMgrs[PONPort].UpdateGEMPortIDsForOnu(IntfONUID,
+ GEMPortList)
+ if err != nil {
+ log.Errorf("Failed to update GEM ports to kv store for %s", IntfONUID)
+ return nil, err
+ }
+ RsrcMgr.UpdateGEMportsPonportToOnuMapOnKVStore(GEMPortList, PONPort,
+ ONUID, UNIID)
+ return GEMPortList, err
}
func (RsrcMgr *OpenOltResourceMgr) UpdateGEMPortIDsForOnu(PONPort uint32, ONUID uint32,
- UNIID uint32, GEMPortList []uint32) error {
+ UNIID uint32, GEMPortList []uint32) error {
- /* Update gemport ids on to kv store for a given pon port,
- onu id and uni id.
- */
- IntfONUID := fmt.Sprintf("%d,%d,%d", PONPort, ONUID, UNIID)
- return RsrcMgr.ResourceMgrs[PONPort].UpdateGEMPortIDsForOnu(IntfONUID,
- GEMPortList)
+ /* Update gemport ids on to kv store for a given pon port,
+ onu id and uni id.
+ */
+ IntfONUID := fmt.Sprintf("%d,%d,%d", PONPort, ONUID, UNIID)
+ return RsrcMgr.ResourceMgrs[PONPort].UpdateGEMPortIDsForOnu(IntfONUID,
+ GEMPortList)
}
func (RsrcMgr *OpenOltResourceMgr) FreeONUID(IntfID uint32, ONUID []uint32) {
- /* Free onu id for a particular interface.*/
- RsrcMgr.ResourceMgrs[IntfID].FreeResourceID(IntfID, ponrmgr.ONU_ID, ONUID)
+ /* Free onu id for a particular interface.*/
+ RsrcMgr.ResourceMgrs[IntfID].FreeResourceID(IntfID, ponrmgr.ONU_ID, ONUID)
- var IntfONUID string
- for _, onu := range ONUID {
- IntfONUID = fmt.Sprintf("%d,%d", IntfID, onu)
- RsrcMgr.ResourceMgrs[IntfID].RemoveResourceMap(IntfONUID)
- }
- return
+ var IntfONUID string
+ for _, onu := range ONUID {
+ IntfONUID = fmt.Sprintf("%d,%d", IntfID, onu)
+ RsrcMgr.ResourceMgrs[IntfID].RemoveResourceMap(IntfONUID)
+ }
+ return
}
func (RsrcMgr *OpenOltResourceMgr) FreeFlowID(IntfID uint32, ONUID uint32,
- UNIID uint32, FlowID []uint32) {
+ UNIID uint32, FlowID []uint32) {
- /* Free flow id for a given interface, onu id and uni id.*/
+ /* Free flow id for a given interface, onu id and uni id.*/
- RsrcMgr.ResourceMgrs[IntfID].FreeResourceID(IntfID, ponrmgr.FLOW_ID, FlowID)
+ RsrcMgr.ResourceMgrs[IntfID].FreeResourceID(IntfID, ponrmgr.FLOW_ID, FlowID)
- var IntfONUID string
- var err error
- for _, flow := range FlowID {
- IntfONUID = fmt.Sprintf("%d,%d,%d", IntfID, ONUID, UNIID)
- err = RsrcMgr.ResourceMgrs[IntfID].UpdateFlowIDForOnu(IntfONUID, flow, false)
- if err != nil {
- log.Error("Failed to Update flow id infor for %s", IntfONUID)
- }
- RsrcMgr.ResourceMgrs[IntfID].RemoveFlowIDInfo(IntfONUID, flow)
- }
- return
+ var IntfONUID string
+ var err error
+ for _, flow := range FlowID {
+ IntfONUID = fmt.Sprintf("%d,%d,%d", IntfID, ONUID, UNIID)
+ err = RsrcMgr.ResourceMgrs[IntfID].UpdateFlowIDForOnu(IntfONUID, flow, false)
+ if err != nil {
+ log.Error("Failed to Update flow id infor for %s", IntfONUID)
+ }
+ RsrcMgr.ResourceMgrs[IntfID].RemoveFlowIDInfo(IntfONUID, flow)
+ }
+ return
}
func (RsrcMgr *OpenOltResourceMgr) FreePONResourcesForONU(IntfID uint32, ONUID uint32) {
- /* Free pon resources for a given pon interface and onu id. */
+ /* Free pon resources for a given pon interface and onu id. */
- var ONUIDs []uint32
- ONUIDs = append(ONUIDs, ONUID)
- IntfONUID := fmt.Sprintf("%d,%d", IntfID, ONUID)
+ var ONUIDs []uint32
+ ONUIDs = append(ONUIDs, ONUID)
+ IntfONUID := fmt.Sprintf("%d,%d", IntfID, ONUID)
- AllocIDs := RsrcMgr.ResourceMgrs[IntfID].GetCurrentAllocIDForOnu(IntfONUID)
+ AllocIDs := RsrcMgr.ResourceMgrs[IntfID].GetCurrentAllocIDForOnu(IntfONUID)
- RsrcMgr.ResourceMgrs[IntfID].FreeResourceID(IntfID,
- ponrmgr.ALLOC_ID,
- AllocIDs)
+ RsrcMgr.ResourceMgrs[IntfID].FreeResourceID(IntfID,
+ ponrmgr.ALLOC_ID,
+ AllocIDs)
- GEMPortIDs := RsrcMgr.ResourceMgrs[IntfID].GetCurrentGEMPortIDsForOnu(IntfONUID)
- RsrcMgr.ResourceMgrs[IntfID].FreeResourceID(IntfID,
- ponrmgr.GEMPORT_ID,
- GEMPortIDs)
+ GEMPortIDs := RsrcMgr.ResourceMgrs[IntfID].GetCurrentGEMPortIDsForOnu(IntfONUID)
+ RsrcMgr.ResourceMgrs[IntfID].FreeResourceID(IntfID,
+ ponrmgr.GEMPORT_ID,
+ GEMPortIDs)
- FlowIDs := RsrcMgr.ResourceMgrs[IntfID].GetCurrentFlowIDsForOnu(IntfONUID)
- RsrcMgr.ResourceMgrs[IntfID].FreeResourceID(IntfID,
- ponrmgr.FLOW_ID,
- FlowIDs)
- RsrcMgr.ResourceMgrs[IntfID].FreeResourceID(IntfID,
- ponrmgr.ONU_ID,
- ONUIDs)
+ FlowIDs := RsrcMgr.ResourceMgrs[IntfID].GetCurrentFlowIDsForOnu(IntfONUID)
+ RsrcMgr.ResourceMgrs[IntfID].FreeResourceID(IntfID,
+ ponrmgr.FLOW_ID,
+ FlowIDs)
+ RsrcMgr.ResourceMgrs[IntfID].FreeResourceID(IntfID,
+ ponrmgr.ONU_ID,
+ ONUIDs)
- // Clear resource map associated with (pon_intf_id, gemport_id) tuple.
- RsrcMgr.ResourceMgrs[IntfID].RemoveResourceMap(IntfONUID)
+ // Clear resource map associated with (pon_intf_id, gemport_id) tuple.
+ RsrcMgr.ResourceMgrs[IntfID].RemoveResourceMap(IntfONUID)
- // Clear the ONU Id associated with the (pon_intf_id, gemport_id) tuple.
- for _, GEM := range GEMPortIDs {
- RsrcMgr.KVStore.Delete(fmt.Sprintf("%d,%d", IntfID, GEM))
- }
+ // Clear the ONU Id associated with the (pon_intf_id, gemport_id) tuple.
+ for _, GEM := range GEMPortIDs {
+ RsrcMgr.KVStore.Delete(fmt.Sprintf("%d,%d", IntfID, GEM))
+ }
}
/* TODO once the flow id info structure is known
@@ -639,4 +639,3 @@
return False
*/
-