From 63eef5a23415380bdc3975c90fc88305a0380a61 Mon Sep 17 00:00:00 2001
From: baude <bbaude@redhat.com>
Date: Thu, 1 Aug 2019 12:43:21 -0500
Subject: [PATCH] add eventlogger to info

to help with future debugging, we now display the type of event logger
being used inside podman info -> host.

Signed-off-by: baude <bbaude@redhat.com>
---
 API.md                               | 2 ++
 cmd/podman/varlink/io.podman.varlink | 3 ++-
 libpod/events/config.go              | 2 ++
 libpod/events/journal_linux.go       | 5 +++++
 libpod/events/logfile.go             | 5 +++++
 libpod/events/nullout.go             | 8 ++++++--
 libpod/info.go                       | 2 +-
 pkg/adapter/client.go                | 3 +--
 pkg/varlinkapi/system.go             | 1 +
 9 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/API.md b/API.md
index 71d09fed8c..d468ba53da 100755
--- a/API.md
+++ b/API.md
@@ -1721,6 +1721,8 @@ kernel [string](https://godoc.org/builtin#string)
 os [string](https://godoc.org/builtin#string)
 
 uptime [string](https://godoc.org/builtin#string)
+
+eventlogger [string](https://godoc.org/builtin#string)
 ### <a name="InfoPodmanBinary"></a>type InfoPodmanBinary
 
 InfoPodman provides details on the podman binary
diff --git a/cmd/podman/varlink/io.podman.varlink b/cmd/podman/varlink/io.podman.varlink
index f5f3250f7c..b867dccc19 100644
--- a/cmd/podman/varlink/io.podman.varlink
+++ b/cmd/podman/varlink/io.podman.varlink
@@ -228,7 +228,8 @@ type InfoHost (
     hostname: string,
     kernel: string,
     os: string,
-    uptime: string
+    uptime: string,
+    eventlogger: string
 )
 
 # InfoGraphStatus describes the detailed status of the storage driver
diff --git a/libpod/events/config.go b/libpod/events/config.go
index 96172d47b9..da1d73013b 100644
--- a/libpod/events/config.go
+++ b/libpod/events/config.go
@@ -53,6 +53,8 @@ type Eventer interface {
 	Write(event Event) error
 	// Read an event from the backend
 	Read(options ReadOptions) error
+	// String returns the type of event logger
+	String() string
 }
 
 // ReadOptions describe the attributes needed to read event logs
diff --git a/libpod/events/journal_linux.go b/libpod/events/journal_linux.go
index d5bce4334d..ae96e3b3b5 100644
--- a/libpod/events/journal_linux.go
+++ b/libpod/events/journal_linux.go
@@ -146,3 +146,8 @@ func newEventFromJournalEntry(entry *sdjournal.JournalEntry) (*Event, error) { /
 	}
 	return &newEvent, nil
 }
+
+// String returns a string representation of the logger
+func (e EventJournalD) String() string {
+	return Journald.String()
+}
diff --git a/libpod/events/logfile.go b/libpod/events/logfile.go
index 30d72b9fca..4b65b0ad01 100644
--- a/libpod/events/logfile.go
+++ b/libpod/events/logfile.go
@@ -71,3 +71,8 @@ func (e EventLogFile) Read(options ReadOptions) error {
 	close(options.EventChannel)
 	return nil
 }
+
+// String returns a string representation of the logger
+func (e EventLogFile) String() string {
+	return LogFile.String()
+}
diff --git a/libpod/events/nullout.go b/libpod/events/nullout.go
index b11afcf802..f3b36e6091 100644
--- a/libpod/events/nullout.go
+++ b/libpod/events/nullout.go
@@ -17,6 +17,10 @@ func (e EventToNull) Read(options ReadOptions) error {
 // NewNullEventer returns a new null eventer.  You should only do this for
 // the purposes on internal libpod testing.
 func NewNullEventer() Eventer {
-	e := EventToNull{}
-	return e
+	return EventToNull{}
+}
+
+// String returns a string representation of the logger
+func (e EventToNull) String() string {
+	return "none"
 }
diff --git a/libpod/info.go b/libpod/info.go
index 4a89fa6482..9ab6f7e52b 100644
--- a/libpod/info.go
+++ b/libpod/info.go
@@ -102,7 +102,7 @@ func (r *Runtime) hostInfo() (map[string]interface{}, error) {
 		return nil, errors.Wrapf(err, "error getting hostname")
 	}
 	info["hostname"] = host
-
+	info["eventlogger"] = r.eventer.String()
 	return info, nil
 }
 
diff --git a/pkg/adapter/client.go b/pkg/adapter/client.go
index 694d9f961d..da6ff5fd07 100644
--- a/pkg/adapter/client.go
+++ b/pkg/adapter/client.go
@@ -16,7 +16,7 @@ var remoteEndpoint *Endpoint
 
 func (r RemoteRuntime) RemoteEndpoint() (remoteEndpoint *Endpoint, err error) {
 	remoteConfigConnections, err := remoteclientconfig.ReadRemoteConfig(r.config)
-	if errors.Cause(err) != remoteclientconfig.ErrNoConfigationFile {
+	if err != nil && errors.Cause(err) != remoteclientconfig.ErrNoConfigationFile {
 		return nil, err
 	}
 	// If the user defines an env variable for podman_varlink_bridge
@@ -68,7 +68,6 @@ func (r RemoteRuntime) Connect() (*varlink.Connection, error) {
 	if err != nil {
 		return nil, err
 	}
-
 	switch ep.Type {
 	case DirectConnection:
 		return varlink.NewConnection(ep.Connection)
diff --git a/pkg/varlinkapi/system.go b/pkg/varlinkapi/system.go
index 9b5b3a5b1c..2de785b79c 100644
--- a/pkg/varlinkapi/system.go
+++ b/pkg/varlinkapi/system.go
@@ -61,6 +61,7 @@ func (i *LibpodAPI) GetInfo(call iopodman.VarlinkCall) error {
 		Kernel:          host["kernel"].(string),
 		Os:              host["os"].(string),
 		Uptime:          host["uptime"].(string),
+		Eventlogger:     host["eventlogger"].(string),
 	}
 	podmanInfo.Host = infoHost
 	store := info[1].Data