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

This commit is contained in:
iwilltry42 2020-04-26 17:17:14 +02:00
parent b32e116a67
commit 3b77ecd6dd
No known key found for this signature in database
GPG Key ID: 7BA57AD1CFF16110
2 changed files with 14 additions and 3 deletions

View File

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

View File

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