github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/lib/awsutil/tags.go (about)

     1  package awsutil
     2  
     3  import (
     4  	libtags "github.com/Cloud-Foundations/Dominator/lib/tags"
     5  	"github.com/aws/aws-sdk-go/aws"
     6  	"github.com/aws/aws-sdk-go/service/ec2"
     7  )
     8  
     9  func makeFilterFromTag(tag libtags.Tag) *ec2.Filter {
    10  	if tag.Key == "" {
    11  		return nil
    12  	}
    13  	if tag.Value == "" {
    14  		return &ec2.Filter{
    15  			Name:   aws.String("tag-key"),
    16  			Values: aws.StringSlice([]string{tag.Key}),
    17  		}
    18  	} else {
    19  		return &ec2.Filter{
    20  			Name:   aws.String("tag:" + tag.Key),
    21  			Values: aws.StringSlice([]string{tag.Value}),
    22  		}
    23  	}
    24  }
    25  
    26  func createTagsFromList(list []*ec2.Tag) libtags.Tags {
    27  	tags := make(libtags.Tags, len(list))
    28  	for _, tag := range list {
    29  		tags[aws.StringValue(tag.Key)] = aws.StringValue(tag.Value)
    30  	}
    31  	return tags
    32  }
    33  
    34  func makeFiltersFromTags(tags libtags.Tags) []*ec2.Filter {
    35  	if len(tags) < 1 {
    36  		return nil
    37  	}
    38  	filters := make([]*ec2.Filter, 0, len(tags))
    39  	for key, value := range tags {
    40  		filters = append(filters, makeFilterFromTag(libtags.Tag{key, value}))
    41  	}
    42  	return filters
    43  }