From 344f7283939a2095a10a262c3575c0fe57ccb6b7 Mon Sep 17 00:00:00 2001 From: Davanum Srinivas Date: Wed, 26 Sep 2018 16:41:25 -0400 Subject: [PATCH] Avoid too many mesos errors in logs when mesos is not present We see a lot of logs in k/k CI as follows: "Factory "mesos" was unable to handle container "/system.slice/home-kubernetes-containerized_mounter.mount" It would be better if we do some sanity check for mesos running before we try to use it. Change-Id: I5f6ebcd44fdd4f8d724b85857edf1600473ef1ab --- container/mesos/client.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/container/mesos/client.go b/container/mesos/client.go index 3e612b56..fa1beb90 100644 --- a/container/mesos/client.go +++ b/container/mesos/client.go @@ -70,6 +70,11 @@ func Client() (mesosAgentClient, error) { ), } }) + + _, err := mesosClient.getVersion() + if err != nil { + return nil, fmt.Errorf("failed to get version") + } return mesosClient, nil } @@ -134,6 +139,20 @@ func (self *client) getContainer(id string) (*mContainer, error) { return nil, fmt.Errorf("can't locate container %s", id) } +func (self *client) getVersion() (string, error) { + req := calls.NonStreaming(calls.GetVersion()) + result, err := self.fetchAndDecode(req) + if err != nil { + return "", fmt.Errorf("failed to get mesos version: %v", err) + } + version := result.GetVersion + + if version == nil { + return "", fmt.Errorf("failed to get mesos version") + } + return version.VersionInfo.Version, nil +} + func (self *client) getContainers() (mContainers, error) { req := calls.NonStreaming(calls.GetContainers()) result, err := self.fetchAndDecode(req)