getLogs: return error if container is not in running state to avoid long unnecessary wait

pull/212/head
iwilltry42 4 years ago
parent b32e116a67
commit 3b77ecd6dd
No known key found for this signature in database
GPG Key ID: 7BA57AD1CFF16110
  1. 6
      pkg/cluster/cluster.go
  2. 11
      pkg/runtimes/docker/node.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()

@ -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)

Loading…
Cancel
Save