Merge "Makefile changes to compile outside of docker"
diff --git a/common/logger/logger.go b/common/logger/logger.go
index f0bf4aa..b53e86d 100644
--- a/common/logger/logger.go
+++ b/common/logger/logger.go
@@ -30,6 +30,7 @@
func Setup(kafkaBroker string, level string) {
logger := log.New()
+ logger.SetReportCaller(true)
myLogger = logger.WithField("topics", []string{"bbsim.log"})
// TODO make this configurable via cli arg
@@ -63,6 +64,10 @@
myLogger.WithField("kafkaBroker", kafkaBroker).Debug("Logger setup done")
}
+func GetLogger() *log.Entry {
+ return myLogger
+}
+
func WithField(key string, value interface{}) *log.Entry {
return myLogger.WithField(key, value)
}
@@ -71,26 +76,26 @@
return myLogger.WithFields(fields)
}
-func Panic(args ...interface{}) {
- myLogger.Panic(fmt.Sprint(args...))
+func Panic(msg string, args ...interface{}) {
+ myLogger.Panic(fmt.Sprintf(msg, args...))
}
-func Fatal(args ...interface{}) {
- myLogger.Fatal(fmt.Sprint(args...))
+func Fatal(msg string, args ...interface{}) {
+ myLogger.Fatal(fmt.Sprintf(msg, args...))
}
-func Error(args ...interface{}) {
- myLogger.Error(fmt.Sprint(args...))
+func Error(msg string, args ...interface{}) {
+ myLogger.Error(fmt.Sprintf(msg, args...))
}
-func Warn(args ...interface{}) {
- myLogger.Warn(fmt.Sprint(args...))
+func Warn(msg string, args ...interface{}) {
+ myLogger.Warn(fmt.Sprintf(msg, args...))
}
-func Info(args ...interface{}) {
- myLogger.Info(fmt.Sprint(args...))
+func Info(msg string, args ...interface{}) {
+ myLogger.Info(fmt.Sprintf(msg, args...))
}
-func Debug(args ...interface{}) {
- myLogger.Debug(fmt.Sprint(args...))
+func Debug(msg string, args ...interface{}) {
+ myLogger.Debug(fmt.Sprintf(msg, args...))
}
diff --git a/common/utils/utils.go b/common/utils/utils.go
index a8fc3ba..f532d51 100644
--- a/common/utils/utils.go
+++ b/common/utils/utils.go
@@ -19,11 +19,29 @@
import (
"fmt"
+ "gerrit.opencord.org/voltha-bbsim/common/logger"
+
"gerrit.opencord.org/voltha-bbsim/device"
+ log "github.com/sirupsen/logrus"
)
func OnuToSn(onu *device.Onu) string {
- // TODO this can be more elegant,
+ // FIXME
// see https://github.com/opencord/voltha/blob/master/voltha/adapters/openolt/openolt_device.py#L929-L943
- return string(onu.SerialNumber.VendorId) + "00000" + fmt.Sprint(onu.IntfID) + "0" + fmt.Sprintf("%x", onu.OnuID)
+ return string(onu.SerialNumber.VendorId) + "00000" + fmt.Sprint(onu.IntfID) + "0" + fmt.Sprintf("%x", onu.OnuID-1)
+}
+
+func LoggerWithOnu(onu *device.Onu) *log.Entry {
+
+ if onu == nil {
+ logger.Warn("utils.LoggerWithOnu has been called without Onu")
+ return logger.GetLogger()
+ }
+
+ return logger.WithFields(log.Fields{
+ "serial_number": OnuToSn(onu),
+ "interfaceId": onu.IntfID,
+ "onuId": onu.OnuID,
+ "oltId": onu.OltID,
+ })
}
diff --git a/core/core_server.go b/core/core_server.go
index 55166dc..48f0ed8 100644
--- a/core/core_server.go
+++ b/core/core_server.go
@@ -98,7 +98,7 @@
}
nnni := s.Olt.NumNniIntf
- logger.Info("OLT ID: %d was retrieved.\n", s.Olt.ID)
+ logger.Info("OLT ID: %d was retrieved.", s.Olt.ID)
for intfid := nnni; intfid < npon+nnni; intfid++ {
s.Onumap[intfid] = device.NewOnus(oltid, intfid, nonus, nnni)
}
@@ -204,23 +204,23 @@
}
olt.OperState = "up"
*olt.InternalState = device.OLT_UP
- logger.Info("OLT %s sent OltInd.\n", olt.Name)
+ logger.Info("OLT %s sent OltInd.", olt.Name)
// OLT sends Interface Indication to Adapter
if err := sendIntfInd(stream, olt); err != nil {
- logger.Error("Fail to sendIntfInd: %v\n", err)
+ logger.Error("Fail to sendIntfInd: %v", err)
return err
}
- logger.Info("OLT %s sent IntfInd.\n", olt.Name)
+ logger.Info("OLT %s sent IntfInd.", olt.Name)
// OLT sends Operation Indication to Adapter after activating each interface
//time.Sleep(IF_UP_TIME * time.Second)
*olt.InternalState = device.PONIF_UP
if err := sendOperInd(stream, olt); err != nil {
- logger.Error("Fail to sendOperInd: %v\n", err)
+ logger.Error("Fail to sendOperInd: %v", err)
return err
}
- logger.Info("OLT %s sent OperInd.\n", olt.Name)
+ logger.Info("OLT %s sent OperInd.", olt.Name)
// OLT sends ONU Discover Indication to Adapter after ONU discovery
for intfid, _ := range s.Onumap {
@@ -229,7 +229,7 @@
for intfid, _ := range s.Onumap {
sendOnuDiscInd(stream, s.Onumap[intfid])
- logger.Info("OLT id:%d sent ONUDiscInd.\n", olt.ID)
+ logger.Info("OLT id:%d sent ONUDiscInd.", olt.ID)
}
// OLT Sends OnuInd after waiting all of those ONUs up
@@ -242,7 +242,7 @@
for intfid, _ := range s.Onumap {
sendOnuInd(stream, s.Onumap[intfid], s.IndInterval)
- logger.Info("OLT id:%d sent ONUInd.\n", olt.ID)
+ logger.Info("OLT id:%d sent ONUInd.", olt.ID)
}
return nil
}
@@ -327,7 +327,7 @@
onuid := onu.OnuID
ioinfo, err := s.identifyUniIoinfo("inside", intfid, onuid)
if err != nil {
- logger.Error("Fail to identifyUniIoinfo (onuid: %d): %v\n", onuid, err)
+ utils.LoggerWithOnu(onu).Error("Fail to identifyUniIoinfo (onuid: %d): %v", onuid, err)
return err
}
uhandler := ioinfo.handler
@@ -350,7 +350,7 @@
case unipkt := <-unichannel:
logger.Debug("Received packet in grpc Server from UNI.")
if unipkt.Info == nil || unipkt.Info.iotype != "uni" {
- logger.Info("WARNING: This packet does not come from UNI ")
+ logger.Debug("WARNING: This packet does not come from UNI ")
continue
}
@@ -361,57 +361,39 @@
layerEth := pkt.Layer(layers.LayerTypeEthernet)
le, _ := layerEth.(*layers.Ethernet)
ethtype := le.EthernetType
- onu, _ := getOnuByID(s.Onumap, onuid)
+ onu, _ := s.GetOnuByID(onuid)
if ethtype == 0x888e {
- logger.WithFields(log.Fields{
- "serial_number": utils.OnuToSn(onu),
- "gemId": gemid,
- "interfaceId": intfid,
- "onuId": onuid,
- }).Debug("Received upstream packet is EAPOL.")
+ utils.LoggerWithOnu(onu).WithFields(log.Fields{
+ "gemId": gemid,
+ }).Info("Received upstream packet is EAPOL.")
} else if layerDHCP := pkt.Layer(layers.LayerTypeDHCPv4); layerDHCP != nil {
- logger.WithFields(log.Fields{
- "serial_number": utils.OnuToSn(onu),
- "gemId": gemid,
- "interfaceId": intfid,
- "onuId": onuid,
- }).Debug("Received upstream packet is DHCP.")
+ utils.LoggerWithOnu(onu).WithFields(log.Fields{
+ "gemId": gemid,
+ }).Info("Received upstream packet is DHCP.")
//C-TAG
sn := convB2S(onu.SerialNumber.VendorSpecific)
if ctag, ok := s.CtagMap[sn]; ok == true {
tagpkt, err := PushVLAN(pkt, uint16(ctag))
if err != nil {
- logger.WithFields(log.Fields{
- "serial_number": utils.OnuToSn(onu),
- "gemId": gemid,
- "interfaceId": intfid,
- "onuId": onuid,
+ utils.LoggerWithOnu(onu).WithFields(log.Fields{
+ "gemId": gemid,
}).Error("Fail to tag C-tag")
} else {
pkt = tagpkt
}
} else {
- logger.WithFields(log.Fields{
- "serial_number": utils.OnuToSn(onu),
- "gemId": gemid,
- "interfaceId": intfid,
- "onuId": onuid,
- "sn": sn,
- "cTagMap": s.CtagMap,
+ utils.LoggerWithOnu(onu).WithFields(log.Fields{
+ "gemId": gemid,
+ "cTagMap": s.CtagMap,
}).Error("Could not find onuid in CtagMap", onuid, sn, s.CtagMap)
}
} else {
continue
}
- logger.WithFields(log.Fields{
- "serial_number": utils.OnuToSn(onu),
- "gemId": gemid,
- "interfaceId": intfid,
- "onuId": onuid,
- }).Debug("sendPktInd")
+ utils.LoggerWithOnu(onu).Info("sendPktInd - UNI Packet")
data = &openolt.Indication_PktInd{PktInd: &openolt.PacketIndication{IntfType: "pon", IntfId: intfid, GemportId: gemid, Pkt: pkt.Data()}}
if err := stream.Send(&openolt.Indication{Data: data}); err != nil {
logger.Error("Fail to send PktInd indication.", err)
@@ -420,19 +402,16 @@
case nnipkt := <-nnichannel:
if nnipkt.Info == nil || nnipkt.Info.iotype != "nni" {
- logger.Info("WARNING: This packet does not come from NNI ")
+ logger.Debug("WARNING: This packet does not come from NNI ")
continue
}
onuid := nnipkt.Info.onuid
onu, _ := getOnuByID(s.Onumap, onuid)
- logger.Debug("Received packet in grpc Server from NNI.")
+ utils.LoggerWithOnu(onu).Info("Received packet in grpc Server from NNI.")
intfid := nnipkt.Info.intfid
pkt := nnipkt.Pkt
- logger.WithFields(log.Fields{
- "interfaceId": intfid,
- "serial_number": utils.OnuToSn(onu),
- }).Info("sendPktInd")
+ utils.LoggerWithOnu(onu).Info("sendPktInd - NNI Packet")
data = &openolt.Indication_PktInd{PktInd: &openolt.PacketIndication{IntfType: "nni", IntfId: intfid, Pkt: pkt.Data()}}
if err := stream.Send(&openolt.Indication{Data: data}); err != nil {
logger.Error("Fail to send PktInd indication.", err)
@@ -453,15 +432,15 @@
func (s *Server) onuPacketOut(intfid uint32, onuid uint32, rawpkt gopacket.Packet) error {
layerEth := rawpkt.Layer(layers.LayerTypeEthernet)
+ onu, _ := s.GetOnuByID(onuid)
+
if layerEth != nil {
pkt, _ := layerEth.(*layers.Ethernet)
ethtype := pkt.EthernetType
if ethtype == 0x888e {
- logger.Debug("Received downstream packet is EAPOL.")
- //logger.Println(rawpkt.Dump())
+ utils.LoggerWithOnu(onu).Info("Received downstream packet is EAPOL.")
} else if layerDHCP := rawpkt.Layer(layers.LayerTypeDHCPv4); layerDHCP != nil {
- logger.Debug("Received downstream packet is DHCP.")
- //logger.Println(rawpkt.Dump())
+ utils.LoggerWithOnu(onu).Info("Received downstream packet is DHCP.")
rawpkt, _, _ = PopVLAN(rawpkt)
rawpkt, _, _ = PopVLAN(rawpkt)
} else {
@@ -525,6 +504,10 @@
return nil, err
}
+func (s *Server) GetOnuByID(onuid uint32) (*device.Onu, error) {
+ return getOnuByID(s.Onumap, onuid)
+}
+
func getOnuByID(onumap map[uint32][]*device.Onu, onuid uint32) (*device.Onu, error) {
for _, onus := range onumap {
for _, onu := range onus {
@@ -534,7 +517,10 @@
}
}
err := errors.New("No matched OnuID is found ")
- logger.Error("%s", err)
+ logger.WithFields(log.Fields{
+ "onumap": onumap,
+ "onuid": onuid,
+ }).Error(err)
return nil, err
}
diff --git a/core/grpc_service.go b/core/grpc_service.go
index 75d8845..61096f4 100644
--- a/core/grpc_service.go
+++ b/core/grpc_service.go
@@ -20,131 +20,134 @@
"net"
"gerrit.opencord.org/voltha-bbsim/common/logger"
+ "gerrit.opencord.org/voltha-bbsim/common/utils"
"gerrit.opencord.org/voltha-bbsim/device"
"gerrit.opencord.org/voltha-bbsim/protos"
"github.com/google/gopacket"
"github.com/google/gopacket/layers"
+ log "github.com/sirupsen/logrus"
"golang.org/x/net/context"
"google.golang.org/grpc"
)
// gRPC Service
func (s *Server) DisableOlt(c context.Context, empty *openolt.Empty) (*openolt.Empty, error) {
- logger.Info("OLT receives DisableOLT()\n")
+ logger.Debug("OLT receives DisableOLT()")
if s.EnableServer != nil {
if err := sendOltIndDown(*s.EnableServer); err != nil {
return new(openolt.Empty), err
}
- logger.Info("Successfuly sent OLT DOWN indication")
+ logger.Debug("Successfuly sent OLT DOWN indication")
}
return new(openolt.Empty), nil
}
func (s *Server) ReenableOlt(c context.Context, empty *openolt.Empty) (*openolt.Empty, error) {
- logger.Info("OLT receives Reenable()\n")
+ logger.Debug("OLT receives Reenable()")
return new(openolt.Empty), nil
}
func (s *Server) CollectStatistics(c context.Context, empty *openolt.Empty) (*openolt.Empty, error) {
- logger.Info("OLT receives CollectStatistics()\n")
+ logger.Debug("OLT receives CollectStatistics()")
return new(openolt.Empty), nil
}
func (s *Server) GetDeviceInfo(c context.Context, empty *openolt.Empty) (*openolt.DeviceInfo, error) {
- logger.Info("OLT receives GetDeviceInfo()\n")
- devinfo := new(openolt.DeviceInfo)
- devinfo.Vendor = "EdgeCore"
- devinfo.Model = "asfvolt16"
- devinfo.HardwareVersion = ""
- devinfo.FirmwareVersion = ""
- devinfo.Technology = "xgspon"
- devinfo.PonPorts = 1
- devinfo.OnuIdStart = 1
- devinfo.OnuIdEnd = 255
- devinfo.AllocIdStart = 1024
- devinfo.AllocIdEnd = 16383
- devinfo.GemportIdStart = 1024
- devinfo.GemportIdEnd = 65535
- devinfo.FlowIdStart = 1
- devinfo.FlowIdEnd = 16383
+ logger.Debug("OLT receives GetDeviceInfo()")
+ devinfo := new(openolt.DeviceInfo)
+ devinfo.Vendor = "EdgeCore"
+ devinfo.Model = "asfvolt16"
+ devinfo.HardwareVersion = ""
+ devinfo.FirmwareVersion = ""
+ devinfo.Technology = "xgspon"
+ devinfo.PonPorts = 1
+ devinfo.OnuIdStart = 1
+ devinfo.OnuIdEnd = 255
+ devinfo.AllocIdStart = 1024
+ devinfo.AllocIdEnd = 16383
+ devinfo.GemportIdStart = 1024
+ devinfo.GemportIdEnd = 65535
+ devinfo.FlowIdStart = 1
+ devinfo.FlowIdEnd = 16383
- /*
- for intf_id := 0; intf_id < 16; intf_id++ {
- r := new(openolt.DeviceInfo_DeviceResourceRanges)
+ /*
+ for intf_id := 0; intf_id < 16; intf_id++ {
+ r := new(openolt.DeviceInfo_DeviceResourceRanges)
- r.IntfIds = append(r.IntfIds, uint32(intf_id))
+ r.IntfIds = append(r.IntfIds, uint32(intf_id))
- r.Technology = "xgspon"
+ r.Technology = "xgspon"
- p := new(openolt.DeviceInfo_DeviceResourceRanges_Pool)
- p.Type = openolt.DeviceInfo_DeviceResourceRanges_Pool_ONU_ID
- p.Sharing = openolt.DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF
- p.Start = 1
- p.End = 255
- r.Pools = append(r.Pools, p)
+ p := new(openolt.DeviceInfo_DeviceResourceRanges_Pool)
+ p.Type = openolt.DeviceInfo_DeviceResourceRanges_Pool_ONU_ID
+ p.Sharing = openolt.DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF
+ p.Start = 1
+ p.End = 255
+ r.Pools = append(r.Pools, p)
- p = new(openolt.DeviceInfo_DeviceResourceRanges_Pool)
- p.Type = openolt.DeviceInfo_DeviceResourceRanges_Pool_ALLOC_ID
- p.Sharing = openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_SAME_TECH
- p.Start = 1024
- p.End = 16383
- r.Pools = append(r.Pools, p)
+ p = new(openolt.DeviceInfo_DeviceResourceRanges_Pool)
+ p.Type = openolt.DeviceInfo_DeviceResourceRanges_Pool_ALLOC_ID
+ p.Sharing = openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_SAME_TECH
+ p.Start = 1024
+ p.End = 16383
+ r.Pools = append(r.Pools, p)
- p = new(openolt.DeviceInfo_DeviceResourceRanges_Pool)
- p.Type = openolt.DeviceInfo_DeviceResourceRanges_Pool_GEMPORT_ID
- p.Sharing = openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH
- p.Start = 1024
- p.End = 65535
- r.Pools = append(r.Pools, p)
+ p = new(openolt.DeviceInfo_DeviceResourceRanges_Pool)
+ p.Type = openolt.DeviceInfo_DeviceResourceRanges_Pool_GEMPORT_ID
+ p.Sharing = openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH
+ p.Start = 1024
+ p.End = 65535
+ r.Pools = append(r.Pools, p)
- p = new(openolt.DeviceInfo_DeviceResourceRanges_Pool)
- p.Type = openolt.DeviceInfo_DeviceResourceRanges_Pool_FLOW_ID
- p.Sharing = openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH
- p.Start = 1
- p.End = 16383
- r.Pools = append(r.Pools, p)
+ p = new(openolt.DeviceInfo_DeviceResourceRanges_Pool)
+ p.Type = openolt.DeviceInfo_DeviceResourceRanges_Pool_FLOW_ID
+ p.Sharing = openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH
+ p.Start = 1
+ p.End = 16383
+ r.Pools = append(r.Pools, p)
- devinfo.Ranges = append(devinfo.Ranges, r)
- }
- */
+ devinfo.Ranges = append(devinfo.Ranges, r)
+ }
+ */
return devinfo, nil
}
func (s *Server) ActivateOnu(c context.Context, onu *openolt.Onu) (*openolt.Empty, error) {
- logger.Info("OLT receives ActivateONU()\n")
+ logger.Debug("OLT receives ActivateONU()")
result := device.ValidateONU(*onu, s.Onumap)
if result == true {
matched, error := getOnuBySN(s.Onumap, onu.SerialNumber)
if error != nil {
- logger.Fatal("%s\n", error)
+ logger.Fatal("%s", error)
}
onuid := onu.OnuId
matched.OnuID = onuid
matched.UpdateIntStatus(device.ONU_ACTIVATED)
- logger.Info("ONU IntfID: %d OnuID: %d activated succesufully.\n", onu.IntfId, onu.OnuId)
+ logger.Debug("ONU IntfID: %d OnuID: %d activated succesufully.", onu.IntfId, onu.OnuId)
}
return new(openolt.Empty), nil
}
func (s *Server) DeactivateOnu(c context.Context, onu *openolt.Onu) (*openolt.Empty, error) {
- logger.Info("OLT receives DeactivateONU()\n")
+ logger.Debug("OLT receives DeactivateONU()")
return new(openolt.Empty), nil
}
func (s *Server) DeleteOnu(c context.Context, onu *openolt.Onu) (*openolt.Empty, error) {
- logger.Info("OLT receives DeleteONU()\n")
+ logger.Debug("OLT receives DeleteONU()")
return new(openolt.Empty), nil
}
func (s *Server) OmciMsgOut(c context.Context, msg *openolt.OmciMsg) (*openolt.Empty, error) {
- logger.Info("OLT %d receives OmciMsgOut to IF %v (ONU-ID: %v) pkt:%x.\n", s.Olt.ID, msg.IntfId, msg.OnuId, msg.Pkt)
+ logger.Debug("OLT %d receives OmciMsgOut to IF %v (ONU-ID: %v) pkt:%x.", s.Olt.ID, msg.IntfId, msg.OnuId, msg.Pkt)
//s.olt.Queue = append(s.olt.Queue, *msg)
return new(openolt.Empty), nil
}
func (s *Server) OnuPacketOut(c context.Context, packet *openolt.OnuPacket) (*openolt.Empty, error) {
- logger.Info("OLT %d receives OnuPacketOut () to IF-ID:%d ONU-ID %d.\n", s.Olt.ID, packet.IntfId, packet.OnuId)
+ onu, _ := s.GetOnuByID(packet.OnuId)
+ utils.LoggerWithOnu(onu).Debug("OLT %d receives OnuPacketOut () to IF-ID:%d ONU-ID %d.", s.Olt.ID, packet.IntfId, packet.OnuId)
onuid := packet.OnuId
intfid := packet.IntfId
rawpkt := gopacket.NewPacket(packet.Pkt, layers.LayerTypeEthernet, gopacket.Default)
@@ -155,7 +158,7 @@
}
func (s *Server) UplinkPacketOut(c context.Context, packet *openolt.UplinkPacket) (*openolt.Empty, error) {
- logger.Info("OLT %d receives UplinkPacketOut().\n", s.Olt.ID)
+ logger.Debug("OLT %d receives UplinkPacketOut().", s.Olt.ID)
rawpkt := gopacket.NewPacket(packet.Pkt, layers.LayerTypeEthernet, gopacket.Default)
if err := s.uplinkPacketOut(rawpkt); err != nil {
return new(openolt.Empty), err
@@ -164,38 +167,47 @@
}
func (s *Server) FlowAdd(c context.Context, flow *openolt.Flow) (*openolt.Empty, error) {
- logger.Info("OLT %d receives FlowAdd().\n", s.Olt.ID)
- logger.Debug("Flow's ONU-ID: %d, CTAG: %d\n", flow.OnuId, flow.Action.IVid)
- //onuid := uint32(flow.OnuId)
- //ctag := flow.Action.IVid
- //s.CtagMap[onuid] = ctag
+
+ onu, _ := s.GetOnuByID(uint32(flow.OnuId))
+
+ utils.LoggerWithOnu(onu).WithFields(log.Fields{
+ "olt": s.Olt.ID,
+ "c_tag": flow.Action.IVid,
+ }).Debug("OLT receives FlowAdd().")
+
return new(openolt.Empty), nil
}
func (s *Server) FlowRemove(c context.Context, flow *openolt.Flow) (*openolt.Empty, error) {
- logger.Info("OLT %d receives FlowRemove().\n", s.Olt.ID)
+ onu, _ := s.GetOnuByID(uint32(flow.OnuId))
+
+ utils.LoggerWithOnu(onu).WithFields(log.Fields{
+ "olt": s.Olt.ID,
+ "c_tag": flow.Action.IVid,
+ }).Debug("OLT receives FlowRemove().")
+
return new(openolt.Empty), nil
}
func (s *Server) HeartbeatCheck(c context.Context, empty *openolt.Empty) (*openolt.Heartbeat, error) {
- logger.Info("OLT %d receives HeartbeatCheck().\n", s.Olt.ID)
+ logger.Debug("OLT %d receives HeartbeatCheck().", s.Olt.ID)
signature := new(openolt.Heartbeat)
signature.HeartbeatSignature = s.Olt.HeartbeatSignature
return signature, nil
}
func (s *Server) EnablePonIf(c context.Context, intf *openolt.Interface) (*openolt.Empty, error) {
- logger.Info("OLT %d receives EnablePonIf().\n", s.Olt.ID)
+ logger.Debug("OLT %d receives EnablePonIf().", s.Olt.ID)
return new(openolt.Empty), nil
}
func (s *Server) DisablePonIf(c context.Context, intf *openolt.Interface) (*openolt.Empty, error) {
- logger.Info("OLT %d receives DisablePonIf().\n", s.Olt.ID)
+ logger.Debug("OLT %d receives DisablePonIf().", s.Olt.ID)
return new(openolt.Empty), nil
}
func (s *Server) Reboot(c context.Context, empty *openolt.Empty) (*openolt.Empty, error) {
- logger.Info("OLT %d receives Reboot ().\n", s.Olt.ID)
+ logger.Debug("OLT %d receives Reboot ().", s.Olt.ID)
// Initialize OLT & Env
logger.Debug("Initialized by Reboot")
s.Disable()
@@ -203,19 +215,19 @@
}
func (s *Server) EnableIndication(empty *openolt.Empty, stream openolt.Openolt_EnableIndicationServer) error {
- logger.Info("OLT receives EnableInd.\n")
+ logger.Debug("OLT receives EnableInd.")
defer func() {
logger.Debug("grpc EnableIndication Done")
}()
if err := s.Enable(&stream); err != nil {
- logger.Error("Failed to Enable Core: %v\n", err)
+ logger.Error("Failed to Enable Core: %v", err)
return err
}
return nil
}
func NewGrpcServer(addrport string) (l net.Listener, g *grpc.Server, e error) {
- logger.Info("Listening %s ...", addrport)
+ logger.Debug("Listening %s ...", addrport)
g = grpc.NewServer()
l, e = net.Listen("tcp", addrport)
return
diff --git a/core/io_info.go b/core/io_info.go
index 867c88c..d104efc 100644
--- a/core/io_info.go
+++ b/core/io_info.go
@@ -41,7 +41,7 @@
}
}
err := errors.New("No matched Ioinfo is found")
- logger.Error(err)
+ logger.Error("identifyUniIoinfo %s", err)
return nil, err
}
@@ -52,7 +52,7 @@
}
}
err := errors.New("No matched Ioinfo is found")
- logger.Error(err)
+ logger.Error("IdentifyNniIoinfo %s", err)
return nil, err
}
@@ -65,7 +65,7 @@
}
if len(ioinfos) == 0 {
err := errors.New("No matched Ioinfo is found")
- logger.Error(err)
+ logger.Error("GetUniIoinfos %s", err)
return nil, err
}
return ioinfos, nil
diff --git a/core/io_worker.go b/core/io_worker.go
index 9a6cb6c..2657e4c 100644
--- a/core/io_worker.go
+++ b/core/io_worker.go
@@ -32,7 +32,7 @@
logger.Debug("recvWorker runs. handler: %v", *handler)
packetSource := gopacket.NewPacketSource(handler, handler.LinkType())
for packet := range packetSource.Packets() {
- logger.Debug("recv packet from IF: %v \n", *handler)
+ logger.Debug("recv packet from IF: %v ", *handler)
//logger.Println(packet.Dump())
pkt := Packet{}
pkt.Info = io
@@ -44,18 +44,18 @@
func SendUni(handle *pcap.Handle, packet gopacket.Packet) {
err := handle.WritePacketData(packet.Data())
if err != nil {
- logger.Error("Error in send packet to UNI-IF: %v e:%s\n", *handle, err)
+ logger.Error("Error in send packet to UNI-IF: %v e:%s", *handle, err)
}
- logger.Debug("Successfully send packet to UNI-IF: %v \n", *handle)
+ logger.Debug("Successfully send packet to UNI-IF: %v ", *handle)
//logger.Println(packet.Dump())
}
func SendNni(handle *pcap.Handle, packet gopacket.Packet) {
err := handle.WritePacketData(packet.Data())
if err != nil {
- logger.Error("Error in send packet to NNI e:%s\n", err)
+ logger.Error("Error in send packet to NNI e:%s", err)
}
- logger.Debug("send packet to NNI-IF: %v \n", *handle)
+ logger.Debug("send packet to NNI-IF: %v ", *handle)
//logger.Println(packet.Dump())
}
@@ -183,6 +183,6 @@
if err != nil {
return nil, err
}
- logger.Debug("Server handle is created for %s\n", vethname)
+ logger.Debug("Server handle is created for %s", vethname)
return handle, nil
}
diff --git a/core/mediator.go b/core/mediator.go
index a6d67b0..ee25264 100644
--- a/core/mediator.go
+++ b/core/mediator.go
@@ -129,7 +129,7 @@
wg.Add(1)
go func() {
if err := server.Start(); err != nil { //Blocking
- logger.Error(err)
+ logger.Error("Start %s", err)
}
wg.Done()
return
diff --git a/core/openolt_service.go b/core/openolt_service.go
index 41e6548..364d0c3 100644
--- a/core/openolt_service.go
+++ b/core/openolt_service.go
@@ -23,13 +23,12 @@
"gerrit.opencord.org/voltha-bbsim/common/utils"
"gerrit.opencord.org/voltha-bbsim/device"
"gerrit.opencord.org/voltha-bbsim/protos"
- log "github.com/sirupsen/logrus"
)
func sendOltIndUp(stream openolt.Openolt_EnableIndicationServer, olt *device.Olt) error {
data := &openolt.Indication_OltInd{OltInd: &openolt.OltIndication{OperState: "up"}}
if err := stream.Send(&openolt.Indication{Data: data}); err != nil {
- logger.Error("Failed to send OLT UP indication: %v\n", err)
+ logger.Error("Failed to send OLT UP indication: %v", err)
return err
}
return nil
@@ -38,7 +37,7 @@
func sendOltIndDown(stream openolt.Openolt_EnableIndicationServer) error {
data := &openolt.Indication_OltInd{OltInd: &openolt.OltIndication{OperState: "down"}}
if err := stream.Send(&openolt.Indication{Data: data}); err != nil {
- logger.Error("Failed to send OLT DOWN indication: %v\n", err)
+ logger.Error("Failed to send OLT DOWN indication: %v", err)
return err
}
return nil
@@ -50,10 +49,10 @@
if intf.Type == "pon" { // There is no need to send IntfInd for NNI
data := &openolt.Indication_IntfInd{&openolt.IntfIndication{IntfId: intf.IntfID, OperState: intf.OperState}}
if err := stream.Send(&openolt.Indication{Data: data}); err != nil {
- logger.Error("Failed to send Intf [id: %d] indication : %v\n", i, err)
+ logger.Error("Failed to send Intf [id: %d] indication : %v", i, err)
return err
}
- logger.Info("SendIntfInd olt:%d intf:%d (%s)\n", olt.ID, intf.IntfID, intf.Type)
+ logger.Info("SendIntfInd olt:%d intf:%d (%s)", olt.ID, intf.IntfID, intf.Type)
}
}
return nil
@@ -64,10 +63,10 @@
intf := olt.Intfs[i]
data := &openolt.Indication_IntfOperInd{&openolt.IntfOperIndication{Type: intf.Type, IntfId: intf.IntfID, OperState: intf.OperState}}
if err := stream.Send(&openolt.Indication{Data: data}); err != nil {
- logger.Error("Failed to send IntfOper [id: %d] indication : %v\n", i, err)
+ logger.Error("Failed to send IntfOper [id: %d] indication : %v", i, err)
return err
}
- logger.Info("SendOperInd olt:%d intf:%d (%s)\n", olt.ID, intf.IntfID, intf.Type)
+ logger.Info("SendOperInd olt:%d intf:%d (%s)", olt.ID, intf.IntfID, intf.Type)
}
return nil
}
@@ -76,15 +75,10 @@
for i, onu := range onus {
data := &openolt.Indication_OnuDiscInd{&openolt.OnuDiscIndication{IntfId: onu.IntfID, SerialNumber: onu.SerialNumber}}
if err := stream.Send(&openolt.Indication{Data: data}); err != nil {
- logger.Error("Failed to send ONUDiscInd [id: %d]: %v\n", i, err)
+ logger.Error("Failed to send ONUDiscInd [id: %d]: %v", i, err)
return err
}
- logger.WithFields(log.Fields{
- "serial_number": utils.OnuToSn(onu),
- "interfaceId": onu.IntfID,
- "onuId": onu.OnuID,
- "oltId": onu.OltID,
- }).Info("sendONUDiscInd Onuid")
+ utils.LoggerWithOnu(onu).Info("sendONUDiscInd Onuid")
}
return nil
}
@@ -94,15 +88,10 @@
time.Sleep(time.Duration(delay) * time.Second)
data := &openolt.Indication_OnuInd{&openolt.OnuIndication{IntfId: onu.IntfID, OnuId: onu.OnuID, OperState: "up", AdminState: "up", SerialNumber: onu.SerialNumber}}
if err := stream.Send(&openolt.Indication{Data: data}); err != nil {
- logger.Error("Failed to send ONUInd [id: %d]: %v\n", i, err)
+ logger.Error("Failed to send ONUInd [id: %d]: %v", i, err)
return err
}
- logger.WithFields(log.Fields{
- "serial_number": utils.OnuToSn(onu),
- "interfaceId": onu.IntfID,
- "onuId": onu.OnuID,
- "oltId": onu.OltID,
- }).Info("sendONUInd Onuid")
+ utils.LoggerWithOnu(onu).Info("sendONUInd Onuid")
}
return nil
}
diff --git a/core/tester.go b/core/tester.go
index cd4f96a..e665aa3 100644
--- a/core/tester.go
+++ b/core/tester.go
@@ -23,6 +23,7 @@
"time"
"gerrit.opencord.org/voltha-bbsim/common/logger"
+ "gerrit.opencord.org/voltha-bbsim/common/utils"
log "github.com/sirupsen/logrus"
"golang.org/x/sync/errgroup"
)
@@ -116,6 +117,11 @@
exec.Command("touch", "/var/run/dhcpd.pid").Run() //This is for DHCP server activation
}
+type UniVeth struct {
+ OnuId uint32
+ Veth string
+}
+
func (t *Tester) exeAAATest(ctx context.Context, s *Server, wait int) error {
tick := time.NewTicker(time.Second)
defer tick.Stop()
@@ -125,9 +131,13 @@
return err
}
- univeths := []string{}
+ univeths := []UniVeth{}
for _, info := range infos {
- univeths = append(univeths, info.Name)
+ uv := UniVeth{
+ OnuId: info.onuid,
+ Veth: info.Name,
+ }
+ univeths = append(univeths, uv)
}
for sec := 1; sec <= wait; sec++ {
@@ -136,13 +146,13 @@
logger.Debug("exeAAATest thread receives close ")
return nil
case <-tick.C:
- logger.WithField("seconds", wait-sec).Info("exeAAATest stands by ...")
+ logger.WithField("seconds", wait-sec).Info("exeAAATest stands by ... ", wait-sec)
if sec == wait {
wg := sync.WaitGroup{}
wg.Add(1)
go func() error {
defer wg.Done()
- err = activateWPASups(ctx, univeths, t.Intvl)
+ err = activateWPASups(ctx, univeths, t.Intvl, s)
if err != nil {
return err
}
@@ -179,9 +189,13 @@
return err
}
- univeths := []string{}
+ univeths := []UniVeth{}
for _, info := range infos {
- univeths = append(univeths, info.Name)
+ uv := UniVeth{
+ OnuId: info.onuid,
+ Veth: info.Name,
+ }
+ univeths = append(univeths, uv)
}
for sec := 1; sec <= wait; sec++ {
@@ -190,13 +204,13 @@
logger.Debug("exeDHCPTest thread receives close ")
return nil
case <-tick.C:
- logger.WithField("seconds", wait-sec).Info("exeDHCPTest stands by ...")
+ logger.WithField("seconds", wait-sec).Info("exeDHCPTest stands by ... ", wait-sec)
if sec == wait {
wg := sync.WaitGroup{}
wg.Add(1)
go func() error {
defer wg.Done()
- err = activateDHCPClients(ctx, univeths, t.Intvl)
+ err = activateDHCPClients(ctx, univeths, t.Intvl, s)
if err != nil {
return err
}
@@ -221,7 +235,7 @@
return nil
}
-func activateWPASups(ctx context.Context, vethnames []string, intvl int) error {
+func activateWPASups(ctx context.Context, vethnames []UniVeth, intvl int, s *Server) error {
tick := time.NewTicker(time.Duration(intvl) * time.Second)
defer tick.Stop()
i := 0
@@ -230,10 +244,9 @@
case <-tick.C:
if i < len(vethnames) {
vethname := vethnames[i]
- if err := activateWPASupplicant(vethname); err != nil {
+ if err := activateWPASupplicant(vethname, s); err != nil {
return err
}
- logger.Debug("activateWPASupplicant for interface %v\n", vethname)
i++
}
case <-ctx.Done():
@@ -244,7 +257,7 @@
return nil
}
-func activateDHCPClients(ctx context.Context, vethnames []string, intvl int) error {
+func activateDHCPClients(ctx context.Context, vethnames []UniVeth, intvl int, s *Server) error {
tick := time.NewTicker(time.Duration(intvl) * time.Second)
defer tick.Stop()
i := 0
@@ -253,12 +266,9 @@
case <-tick.C:
if i < len(vethnames) {
vethname := vethnames[i]
- if err := activateDHCPClient(vethname); err != nil {
+ if err := activateDHCPClient(vethname, s); err != nil {
return err
}
- logger.WithFields(log.Fields{
- "interface": vethname,
- }).Debug("activateDHCPClient")
i++
}
case <-ctx.Done():
@@ -272,55 +282,61 @@
func killProcess(name string) error {
err := exec.Command("pkill", name).Run()
if err != nil {
- logger.Error("Fail to pkill %s: %v\n", name, err)
+ logger.Error("Fail to pkill %s: %v", name, err)
return err
}
- logger.Info("Successfully killed %s\n", name)
+ logger.Info("Successfully killed %s", name)
return nil
}
-func activateWPASupplicant(vethname string) (err error) {
+func activateWPASupplicant(univeth UniVeth, s *Server) (err error) {
cmd := "/sbin/wpa_supplicant"
conf := "/etc/wpa_supplicant/wpa_supplicant.conf"
- err = exec.Command(cmd, "-D", "wired", "-i", vethname, "-c", conf).Start()
+ err = exec.Command(cmd, "-D", "wired", "-i", univeth.Veth, "-c", conf).Start()
+ onu, _ := s.GetOnuByID(univeth.OnuId)
if err != nil {
- logger.Error("Fail to activateWPASupplicant() for :%s %v\n", vethname, err)
+ utils.LoggerWithOnu(onu).WithFields(log.Fields{
+ "err": err,
+ "veth": univeth.Veth,
+ }).Error("Fail to activateWPASupplicant()", err)
return
}
- logger.Info("activateWPASupplicant() for :%s\n", vethname)
+ logger.Info("activateWPASupplicant() for :%s", univeth.Veth)
return
}
-func activateDHCPClient(vethname string) (err error) {
- logger.Debug("activateDHCPClient() start for: %s\n", vethname)
- cmd := exec.Command("/usr/local/bin/dhclient", vethname)
- // if err := cmd.Run(); err != nil {
+func activateDHCPClient(univeth UniVeth, s *Server) (err error) {
+ onu, _ := s.GetOnuByID(univeth.OnuId)
+ utils.LoggerWithOnu(onu).WithFields(log.Fields{
+ "veth": univeth.Veth,
+ }).Info("activateDHCPClient() start for: %s", univeth)
+ cmd := exec.Command("/usr/local/bin/dhclient", univeth.Veth)
if err := cmd.Start(); err != nil {
- logger.Error("Fail to activateDHCPClient() for: %s", vethname)
- logger.Panic(err)
+ logger.Error("Fail to activateDHCPClient() for: %s", univeth)
+ logger.Panic("activateDHCPClient %s", err)
}
- logger.Debug("activateDHCPClient() done for: %s\n", vethname)
+ logger.Debug("activateDHCPClient() done for: %s", univeth)
return
}
func activateDHCPServer(veth string, serverip string) error {
err := exec.Command("ip", "addr", "add", serverip, "dev", veth).Run()
if err != nil {
- logger.Error("Fail to add ip to %s address: %s\n", veth, err)
+ logger.Error("Fail to add ip to %s address: %s", veth, err)
return err
}
err = exec.Command("ip", "link", "set", veth, "up").Run()
if err != nil {
- logger.Error("Fail to set %s up: %s\n", veth, err)
+ logger.Error("Fail to set %s up: %s", veth, err)
return err
}
cmd := "/usr/local/bin/dhcpd"
conf := "/etc/dhcp/dhcpd.conf"
err = exec.Command(cmd, "-cf", conf, veth).Run()
if err != nil {
- logger.Error("Fail to activateDHCP Server (): %s\n", err)
+ logger.Error("Fail to activateDHCP Server (): %s", err)
return err
}
- logger.Info("DHCP Server is successfully activated !\n")
+ logger.Info("DHCP Server is successfully activated !")
return err
}