mirror of https://github.com/docker/compose.git
SDK methods to query service tasks and retrieve public IP
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
This commit is contained in:
parent
6798ad1245
commit
a5a925173c
|
@ -338,3 +338,55 @@ func (s sdk) GetLogs(ctx context.Context, name string) error {
|
|||
time.Sleep(500 * time.Millisecond)
|
||||
}
|
||||
}
|
||||
|
||||
func (s sdk) GetTasks(ctx context.Context, cluster string, name string) ([]string, error) {
|
||||
tasks, err := s.ECS.ListTasksWithContext(ctx, &ecs.ListTasksInput{
|
||||
Cluster: aws.String(cluster),
|
||||
ServiceName: aws.String(name),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
arns := []string{}
|
||||
for _, arn := range tasks.TaskArns {
|
||||
arns = append(arns, *arn)
|
||||
}
|
||||
return arns, nil
|
||||
}
|
||||
|
||||
func (s sdk) GetNetworkInterfaces(ctx context.Context, cluster string, arns ...string) ([]string, error) {
|
||||
tasks, err := s.ECS.DescribeTasksWithContext(ctx, &ecs.DescribeTasksInput{
|
||||
Cluster: aws.String(cluster),
|
||||
Tasks: aws.StringSlice(arns),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
interfaces := []string{}
|
||||
for _, task := range tasks.Tasks {
|
||||
for _, attachement := range task.Attachments {
|
||||
if *attachement.Type == "ElasticNetworkInterface" {
|
||||
for _, pair := range attachement.Details {
|
||||
if *pair.Name == "networkInterfaceId" {
|
||||
interfaces = append(interfaces, *pair.Value)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return interfaces, nil
|
||||
}
|
||||
|
||||
func (s sdk) GetPublicIPs(ctx context.Context, interfaces ...string) ([]string, error) {
|
||||
desc, err := s.EC2.DescribeNetworkInterfaces(&ec2.DescribeNetworkInterfacesInput{
|
||||
NetworkInterfaceIds: aws.StringSlice(interfaces),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
publicIPs := []string{}
|
||||
for _, interf := range desc.NetworkInterfaces {
|
||||
publicIPs = append(publicIPs, *interf.Association.PublicIp)
|
||||
}
|
||||
return publicIPs, nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue