VOL-291 : PON simulator refactoring for cluster integration
- Added ponsim build target in Makefile
- Added new option to vcore to select comm type with ponsim
- Modified all proto files to include destination go package
Amendments:
- Clean up based on review comments
- Properly close GRPC connections in ponsim_olt adapter
- Added voltha namespace to some k8s templates
Change-Id: I2f349fa7b3550a8a8cc8fc676cc896f33fbb9372
diff --git a/ponsim/v2/common/logger.go b/ponsim/v2/common/logger.go
new file mode 100644
index 0000000..7749dd2
--- /dev/null
+++ b/ponsim/v2/common/logger.go
@@ -0,0 +1,81 @@
+package common
+
+import (
+ "github.com/evalphobia/logrus_fluent"
+ "github.com/sirupsen/logrus"
+ "net"
+ "strconv"
+ "sync"
+)
+
+type logManager struct {
+ *logrus.Logger
+}
+
+// Singleton instance
+var mgrInstance *logManager
+var once sync.Once
+
+func (mgr *logManager) SetFluentd(fluentdHost string) {
+ var hook *logrus_fluent.FluentHook
+ var err error
+ var host string
+ var portStr string
+ var port int
+
+ if host, portStr, err = net.SplitHostPort(fluentdHost); err != nil {
+ mgr.WithFields(logrus.Fields{
+ "error": err.Error(),
+ }).Error("Failed to retrieve host/port information")
+ return
+ }
+
+ if port, err = strconv.Atoi(portStr); err != nil {
+ mgr.WithFields(logrus.Fields{
+ "error": err.Error(),
+ }).Error("Failed to convert port to integer")
+ return
+ }
+
+ if hook, err = logrus_fluent.NewWithConfig(
+ logrus_fluent.Config{
+ Host: host,
+ Port: port,
+ }); err != nil {
+ mgr.WithFields(logrus.Fields{
+ "error": err.Error(),
+ }).Error("Failed to enable Fluentd hook")
+ return
+ }
+
+ hook.SetTag("ponsim")
+
+ hook.SetLevels([]logrus.Level{
+ logrus.DebugLevel,
+ })
+
+ mgr.AddHook(hook)
+
+ mgr.WithFields(logrus.Fields{
+ "hook": hook,
+ }).Info("Added fluentd hook")
+}
+
+/**
+ * Get instance
+ *
+ * It should get initialized only once
+ */
+func Logger() *logManager {
+ once.Do(func() {
+
+ _logger := logrus.New()
+ _logger.Formatter = new(logrus.JSONFormatter)
+ _logger.Level = logrus.DebugLevel
+ //_logger.Out =
+
+ mgrInstance = &logManager{_logger}
+ })
+
+ return mgrInstance
+}