github.com/solo-io/unik@v0.0.0-20190717152701-a58d3e8e33b7/pkg/providers/aws/list_images.go (about)

     1  package aws
     2  
     3  import (
     4  	"github.com/sirupsen/logrus"
     5  	"github.com/aws/aws-sdk-go/aws"
     6  	"github.com/aws/aws-sdk-go/service/ec2"
     7  	"github.com/emc-advanced-dev/pkg/errors"
     8  	"github.com/solo-io/unik/pkg/types"
     9  )
    10  
    11  const UNIK_IMAGE_ID = "UNIK_IMAGE_ID"
    12  
    13  func (p *AwsProvider) ListImages() ([]*types.Image, error) {
    14  	if len(p.state.GetImages()) < 1 {
    15  		return []*types.Image{}, nil
    16  	}
    17  	imageIds := []*string{}
    18  	for imageId := range p.state.GetImages() {
    19  		imageIds = append(imageIds, aws.String(imageId))
    20  	}
    21  	param := &ec2.DescribeImagesInput{
    22  		ImageIds: imageIds,
    23  	}
    24  	output, err := p.newEC2().DescribeImages(param)
    25  	if err != nil {
    26  		return nil, errors.New("running ec2 describe images ", err)
    27  	}
    28  	images := []*types.Image{}
    29  	for _, ec2Image := range output.Images {
    30  		imageId := *ec2Image.ImageId
    31  		image, ok := p.state.GetImages()[imageId]
    32  		if !ok {
    33  			logrus.WithFields(logrus.Fields{"ec2Image": ec2Image}).Errorf("found an image that unik has no record of")
    34  			continue
    35  		}
    36  		images = append(images, image)
    37  	}
    38  	return images, nil
    39  }