(VOL-4972) enabling pon and onu object get apis in bbsim
Change-Id: I81932e4a8a1370ce83624f1deaf385c2809d568c
diff --git a/internal/bbsim/devices/olt.go b/internal/bbsim/devices/olt.go
index 96ee5f1..bb5be2e 100644
--- a/internal/bbsim/devices/olt.go
+++ b/internal/bbsim/devices/olt.go
@@ -1597,9 +1597,84 @@
return new(openolt.Empty), nil
}
-func (o *OltDevice) GetOnuInfo(context context.Context, packet *openolt.Onu) (*openolt.OnuIndication, error) {
- oltLogger.Error("GetOnuInfo not implemented")
- return new(openolt.OnuIndication), nil
+func (o *OltDevice) GetOnuInfo(context context.Context, packet *openolt.Onu) (*openolt.OnuInfo, error) {
+ pon, err := o.GetPonById(packet.GetIntfId())
+ if err != nil {
+ log.WithFields(log.Fields{
+ "OnuId": packet.GetOnuId(),
+ "IntfId": packet.GetIntfId(),
+ "err": err,
+ }).Error("Can't find PonPort")
+ return nil, err
+ }
+ onu, _ := pon.GetOnuById(packet.GetOnuId())
+ if err != nil {
+ log.WithFields(log.Fields{
+ "OnuId": packet.GetOnuId(),
+ "IntfId": packet.GetIntfId(),
+ "err": err,
+ }).Error("Can't find Onu")
+ return nil, err
+ }
+
+ resp := new(openolt.OnuInfo)
+ resp.OnuId = packet.GetOnuId()
+ if onu.OperState.Current() == "up" {
+ resp.Losi = openolt.AlarmState_OFF
+ resp.Lofi = openolt.AlarmState_OFF
+ resp.Loami = openolt.AlarmState_OFF
+ } else if onu.OperState.Current() == "down" {
+ resp.Losi = openolt.AlarmState_ON
+ resp.Lofi = openolt.AlarmState_ON
+ resp.Loami = openolt.AlarmState_ON
+ }
+ if onu.InternalState.Current() == OnuStateEnabled {
+ resp.State = openolt.OnuInfo_ACTIVE
+ } else if onu.InternalState.Current() == OnuStateDisabled {
+ resp.State = openolt.OnuInfo_INACTIVE
+ } else if onu.InternalState.Current() == OnuStateCreated || (onu.InternalState.Current() == OnuStateInitialized) {
+ resp.State = openolt.OnuInfo_NOT_CONFIGURED
+ } else {
+ resp.State = openolt.OnuInfo_UNKNOWN
+ }
+ log.WithFields(log.Fields{
+ "OnuId": packet.GetOnuId(),
+ "IntfId": packet.GetIntfId(),
+ "response": resp,
+ }).Info("Response for onu info")
+ return resp, nil
+}
+
+func (o *OltDevice) GetPonInterfaceInfo(context context.Context, packet *openolt.Interface) (*openolt.PonIntfInfo, error) {
+ ponPort, err := o.GetPonById(packet.GetIntfId())
+ if err != nil {
+ log.WithFields(log.Fields{
+ "IntfId": packet.GetIntfId(),
+ "err": err,
+ }).Error("Can't find PonPort")
+ return nil, err
+ }
+ resp := new(openolt.PonIntfInfo)
+ resp.IntfId = packet.GetIntfId()
+ if ponPort.OperState.Current() == "up" {
+ resp.Los = openolt.AlarmState_OFF
+ } else if ponPort.OperState.Current() == "down" {
+ resp.Los = openolt.AlarmState_ON
+ }
+ if ponPort.InternalState.Current() == "enabled" {
+ resp.State = openolt.PonIntfInfo_ACTIVE_WORKING
+ } else if ponPort.InternalState.Current() == "disabled" {
+ resp.State = openolt.PonIntfInfo_INACTIVE
+ } else if ponPort.InternalState.Current() == "created" {
+ resp.State = openolt.PonIntfInfo_ACTIVE_STANDBY
+ } else {
+ resp.State = openolt.PonIntfInfo_UNKNOWN
+ }
+ log.WithFields(log.Fields{
+ "IntfId": packet.GetIntfId(),
+ "response": resp,
+ }).Info("Response for pon info")
+ return resp, nil
}
func (o *OltDevice) GetPonIf(context context.Context, packet *openolt.Interface) (*openolt.IntfIndication, error) {