Browse Source

Send the `tail` parameter to ACI if present

Djordje Lukic 5 years ago
parent
commit
6a5973597d
2 changed files with 11 additions and 12 deletions
  1. 2 2
      azure/aci.go
  2. 9 10
      azure/backend.go

+ 2 - 2
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)
 	}

+ 9 - 10
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)