From 3b77ecd6dd44ea9ad6fac91771f00ed3d88ee534 Mon Sep 17 00:00:00 2001 From: iwilltry42 Date: Sun, 26 Apr 2020 17:17:14 +0200 Subject: [PATCH] getLogs: return error if container is not in running state to avoid long unnecessary wait --- pkg/cluster/cluster.go | 6 ++++-- pkg/runtimes/docker/node.go | 11 ++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/pkg/cluster/cluster.go b/pkg/cluster/cluster.go index 8cf36fbf..b3291b72 100644 --- a/pkg/cluster/cluster.go +++ b/pkg/cluster/cluster.go @@ -175,14 +175,16 @@ func CreateCluster(ctx context.Context, cluster *k3d.Cluster, runtime k3drt.Runt } log.Debugln("Waiting for initializing master node...") logreader, err := runtime.GetNodeLogs(cluster.InitNode) - defer logreader.Close() if err != nil { - logreader.Close() + if logreader != nil { + logreader.Close() + } log.Errorln(err) log.Errorln("Failed to get logs from the initializig master node.. waiting for 3 seconds instead") time.Sleep(3 * time.Second) break } + defer logreader.Close() buf := new(bytes.Buffer) nRead, _ := buf.ReadFrom(logreader) logreader.Close() diff --git a/pkg/runtimes/docker/node.go b/pkg/runtimes/docker/node.go index e982c093..d21ba4b7 100644 --- a/pkg/runtimes/docker/node.go +++ b/pkg/runtimes/docker/node.go @@ -206,7 +206,16 @@ func (d Docker) GetNodeLogs(node *k3d.Node) (io.ReadCloser, error) { return nil, err } - // FIXME: return error if container is down + containerInspectResponse, err := docker.ContainerInspect(ctx, container.ID) + if err != nil { + log.Errorln("Failed to inspect container '%s'", container.ID) + return nil, err + } + + if !containerInspectResponse.ContainerJSONBase.State.Running { + return nil, fmt.Errorf("Node '%s' (container '%s') not running", node.Name, containerInspectResponse.ID) + } + logreader, err := docker.ContainerLogs(ctx, container.ID, types.ContainerLogsOptions{ShowStdout: true, ShowStderr: true}) if err != nil { log.Errorf("Failed to get logs from node '%s' (container '%s')", node.Name, container.ID)