SEBA-910 Implementation of Create/Remove TrafficSchedulers
fix formating issue and bump verison to 0.0.16-dev
Updated Makefile fix proto dependency
print in table format
resolve merge conflict with igmp file
bump to 0.0.18-dev
remove overriding onu port no
rebase and update
Change-Id: Ie0dce516a7044cd4ed1de7bafcdcd292e5daf689
diff --git a/internal/bbsim/devices/olt.go b/internal/bbsim/devices/olt.go
index 9acee9f..955d2ad 100644
--- a/internal/bbsim/devices/olt.go
+++ b/internal/bbsim/devices/olt.go
@@ -33,7 +33,7 @@
 	"github.com/opencord/bbsim/internal/common"
 	omcisim "github.com/opencord/omci-sim"
 	"github.com/opencord/voltha-protos/v2/go/openolt"
-	"github.com/opencord/voltha-protos/v2/go/tech_profile"
+	tech_profile "github.com/opencord/voltha-protos/v2/go/tech_profile"
 	log "github.com/sirupsen/logrus"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/reflection"
@@ -69,6 +69,7 @@
 	enableContextCancel context.CancelFunc
 
 	OpenoltStream *openolt.Openolt_EnableIndicationServer
+	enablePerf    bool
 }
 
 var olt OltDevice
@@ -78,7 +79,7 @@
 	return &olt
 }
 
-func CreateOLT(oltId int, nni int, pon int, onuPerPon int, sTag int, cTagInit int, auth bool, dhcp bool, delay int, ca string, isMock bool) *OltDevice {
+func CreateOLT(oltId int, nni int, pon int, onuPerPon int, sTag int, cTagInit int, auth bool, dhcp bool, delay int, ca string, enablePerf bool, isMock bool) *OltDevice {
 	oltLogger.WithFields(log.Fields{
 		"ID":           oltId,
 		"NumNni":       nni,
@@ -98,6 +99,7 @@
 		Pons:         []*PonPort{},
 		Nnis:         []*NniPort{},
 		Delay:        delay,
+		enablePerf:   enablePerf,
 	}
 
 	if val, ok := ControlledActivationModes[ca]; ok {
@@ -1069,13 +1071,49 @@
 	return new(openolt.Empty), nil
 }
 
-func (s OltDevice) CreateTrafficSchedulers(context.Context, *tech_profile.TrafficSchedulers) (*openolt.Empty, error) {
-	oltLogger.Info("received CreateTrafficSchedulers")
+func (s OltDevice) CreateTrafficSchedulers(context context.Context, trafficSchedulers *tech_profile.TrafficSchedulers) (*openolt.Empty, error) {
+	oltLogger.WithFields(log.Fields{
+		"OnuId":     trafficSchedulers.OnuId,
+		"IntfId":    trafficSchedulers.IntfId,
+		"OnuPortNo": trafficSchedulers.PortNo,
+	}).Info("received CreateTrafficSchedulers")
+
+	if !s.enablePerf {
+		pon, err := s.GetPonById(trafficSchedulers.IntfId)
+		if err != nil {
+			oltLogger.Errorf("Error retrieving PON by IntfId: %v", err)
+			return new(openolt.Empty), err
+		}
+		onu, err := pon.GetOnuById(trafficSchedulers.OnuId)
+		if err != nil {
+			oltLogger.Errorf("Error retrieving ONU from pon by OnuId: %v", err)
+			return new(openolt.Empty), err
+		}
+		onu.TrafficSchedulers = trafficSchedulers
+	}
 	return new(openolt.Empty), nil
 }
 
-func (s OltDevice) RemoveTrafficSchedulers(context.Context, *tech_profile.TrafficSchedulers) (*openolt.Empty, error) {
-	oltLogger.Info("received RemoveTrafficSchedulers")
+func (s OltDevice) RemoveTrafficSchedulers(context context.Context, trafficSchedulers *tech_profile.TrafficSchedulers) (*openolt.Empty, error) {
+	oltLogger.WithFields(log.Fields{
+		"OnuId":     trafficSchedulers.OnuId,
+		"IntfId":    trafficSchedulers.IntfId,
+		"OnuPortNo": trafficSchedulers.PortNo,
+	}).Info("received RemoveTrafficSchedulers")
+	if !s.enablePerf {
+		pon, err := s.GetPonById(trafficSchedulers.IntfId)
+		if err != nil {
+			oltLogger.Errorf("Error retrieving PON by IntfId: %v", err)
+			return new(openolt.Empty), err
+		}
+		onu, err := pon.GetOnuById(trafficSchedulers.OnuId)
+		if err != nil {
+			oltLogger.Errorf("Error retrieving ONU from pon by OnuId: %v", err)
+			return new(openolt.Empty), err
+		}
+
+		onu.TrafficSchedulers = nil
+	}
 	return new(openolt.Empty), nil
 }