diff --git a/azure/aci.go b/azure/aci.go index e8fefcd7..6b13283f 100644 --- a/azure/aci.go +++ b/azure/aci.go @@ -221,13 +221,13 @@ func exec(ctx context.Context, address string, password string, reader io.Reader } } -func getACIContainerLogs(ctx context.Context, aciContext store.AciContext, containerGroupName, containerName string) (string, error) { +func getACIContainerLogs(ctx context.Context, aciContext store.AciContext, containerGroupName, containerName string, tail *int32) (string, error) { containerClient, err := getContainerClient(aciContext.SubscriptionID) if err != nil { return "", errors.Wrapf(err, "cannot get container client") } - logs, err := containerClient.ListLogs(ctx, aciContext.ResourceGroup, containerGroupName, containerName, nil) + logs, err := containerClient.ListLogs(ctx, aciContext.ResourceGroup, containerGroupName, containerName, tail) if err != nil { return "", fmt.Errorf("cannot get container logs: %v", err) } diff --git a/azure/backend.go b/azure/backend.go index d6f80f81..623bfddf 100644 --- a/azure/backend.go +++ b/azure/backend.go @@ -236,21 +236,20 @@ func (cs *aciContainerService) Exec(ctx context.Context, name string, command st func (cs *aciContainerService) Logs(ctx context.Context, containerName string, req containers.LogsRequest) error { groupName, containerAciName := getGroupAndContainerName(containerName) - logs, err := getACIContainerLogs(ctx, cs.ctx, groupName, containerAciName) - if err != nil { - return err - } + var tail *int32 + if req.Tail != "all" { - tail, err := strconv.Atoi(req.Tail) + reqTail, err := strconv.Atoi(req.Tail) if err != nil { return err } - lines := strings.Split(logs, "\n") + i32 := int32(reqTail) + tail = &i32 + } - // If asked for less lines than exist, take only those lines - if tail <= len(lines) { - logs = strings.Join(lines[len(lines)-tail:], "\n") - } + logs, err := getACIContainerLogs(ctx, cs.ctx, groupName, containerAciName, tail) + if err != nil { + return err } _, err = fmt.Fprint(req.Writer, logs)