SEBA-927 implemenation of controlled PON and ONU activation
updated controlledActivation to enum
Change-Id: Ie505c491755d3890a2ea4a86a9c74f17a5eab484
diff --git a/internal/bbsim/api/onus_handler.go b/internal/bbsim/api/onus_handler.go
index cec8803..7ec4ab3 100644
--- a/internal/bbsim/api/onus_handler.go
+++ b/internal/bbsim/api/onus_handler.go
@@ -136,13 +136,39 @@
olt := devices.GetOLT()
onu, err := olt.FindOnuBySn(req.SerialNumber)
-
if err != nil {
res.StatusCode = int32(codes.NotFound)
res.Message = err.Error()
return res, err
}
+ pon, _ := olt.GetPonById(onu.PonPortID)
+ if pon.InternalState.Current() != "enabled" {
+ err := fmt.Errorf("PON port %d not enabled", onu.PonPortID)
+ logger.WithFields(log.Fields{
+ "OnuId": onu.ID,
+ "IntfId": onu.PonPortID,
+ "OnuSn": onu.Sn(),
+ }).Errorf("Cannot poweron ONU: %s", err.Error())
+
+ res.StatusCode = int32(codes.FailedPrecondition)
+ res.Message = err.Error()
+ return res, err
+ }
+
+ if onu.InternalState.Current() == "created" {
+ if err := onu.InternalState.Event("initialize"); err != nil {
+ logger.WithFields(log.Fields{
+ "OnuId": onu.ID,
+ "IntfId": onu.PonPortID,
+ "OnuSn": onu.Sn(),
+ }).Errorf("Cannot poweron ONU: %s", err.Error())
+ res.StatusCode = int32(codes.FailedPrecondition)
+ res.Message = err.Error()
+ return res, err
+ }
+ }
+
if err := onu.InternalState.Event("discover"); err != nil {
logger.WithFields(log.Fields{
"OnuId": onu.ID,