func()

in ecs/task.go [183:246]


func (ecs *ECS) DescribeTasks(taskIds []string) []Task {
	var tasks []Task

	if len(taskIds) == 0 {
		return tasks
	}

	resp, err := ecs.svc.DescribeTasks(
		&awsecs.DescribeTasksInput{
			Cluster: aws.String(ecs.ClusterName),
			Tasks:   aws.StringSlice(taskIds),
		},
	)

	if err != nil {
		console.ErrorExit(err, "Could not describe ECS tasks")
	}

	for _, t := range resp.Tasks {
		taskArn := aws.StringValue(t.TaskArn)
		contents := strings.Split(taskArn, "/")
		taskId := contents[len(contents)-1]

		task := Task{
			Cpu:           aws.StringValue(t.Cpu),
			CreatedAt:     aws.TimeValue(t.CreatedAt),
			DeploymentId:  ecs.getDeploymentId(aws.StringValue(t.TaskDefinitionArn)),
			DesiredStatus: aws.StringValue(t.DesiredStatus),
			LastStatus:    aws.StringValue(t.LastStatus),
			Memory:        aws.StringValue(t.Memory),
			TaskId:        taskId,
			StartedBy:     aws.StringValue(t.StartedBy),
		}

		taskDefinition := ecs.DescribeTaskDefinition(aws.StringValue(t.TaskDefinitionArn))
		task.Image = aws.StringValue(taskDefinition.ContainerDefinitions[0].Image)
		task.TaskRole = aws.StringValue(taskDefinition.TaskRoleArn)

		for _, environment := range taskDefinition.ContainerDefinitions[0].Environment {
			task.EnvVars = append(
				task.EnvVars,
				EnvVar{
					Key:   aws.StringValue(environment.Name),
					Value: aws.StringValue(environment.Value),
				},
			)
		}

		if len(t.Attachments) == 1 {
			for _, detail := range t.Attachments[0].Details {
				switch aws.StringValue(detail.Name) {
				case detailNetworkInterfaceId:
					task.EniId = aws.StringValue(detail.Value)
				case detailSubnetId:
					task.SubnetId = aws.StringValue(detail.Value)
				}
			}
		}

		tasks = append(tasks, task)
	}

	return tasks
}