in updater/aws.go [215:244]
func (u *updater) eligible(containerInstance string) (bool, error) {
log.Printf("Checking eligiblity for update of container instance %q", containerInstance)
list, err := u.ecs.ListTasks(&ecs.ListTasksInput{
Cluster: &u.cluster,
ContainerInstance: aws.String(containerInstance),
})
if err != nil {
return false, fmt.Errorf("failed to list tasks: %w", err)
}
taskARNs := list.TaskArns
if len(list.TaskArns) == 0 {
return true, nil
}
desc, err := u.ecs.DescribeTasks(&ecs.DescribeTasksInput{
Cluster: &u.cluster,
Tasks: taskARNs,
})
if err != nil {
return false, fmt.Errorf("failed to describe tasks: %w", err)
}
for _, listResult := range desc.Tasks {
startedBy := aws.StringValue(listResult.StartedBy)
if !strings.HasPrefix(startedBy, "ecs-svc/") {
log.Printf("Container instance %q has a non-service task running: %s", containerInstance, aws.StringValue(listResult.TaskArn))
return false, nil
}
}
return true, nil
}