Skip to content

Commit

Permalink
Merge pull request kubernetes#9923 from johngmyers/automated-cherry-p…
Browse files Browse the repository at this point in the history
…ick-of-#9909-upstream-release-1.17

Automated cherry pick of kubernetes#9909: Get launch template versions after filtering templates
  • Loading branch information
k8s-ci-robot committed Sep 15, 2020
2 parents 8c204fc + c945bd8 commit 4e01432
Showing 1 changed file with 31 additions and 46 deletions.
77 changes: 31 additions & 46 deletions upup/pkg/fi/cloudup/awstasks/launchtemplate_target_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -312,68 +312,53 @@ func (t *LaunchTemplate) findAllLaunchTemplates(c *fi.Context) ([]*ec2.LaunchTem
}
}

// findAllLaunchTemplateVersions returns all the launch templates versions for us
func (t *LaunchTemplate) findAllLaunchTemplatesVersions(c *fi.Context) ([]*ec2.LaunchTemplateVersion, error) {
var list []*ec2.LaunchTemplateVersion

// findLaunchTemplates returns a list of launch templates
func (t *LaunchTemplate) findLaunchTemplates(c *fi.Context) ([]*ec2.LaunchTemplateVersion, error) {
cloud, ok := c.Cloud.(awsup.AWSCloud)
if !ok {
return []*ec2.LaunchTemplateVersion{}, fmt.Errorf("invalid cloud provider: %v, expected: awsup.AWSCloud", c.Cloud)
}

// @step: get a list of the launch templates
templates, err := t.findAllLaunchTemplates(c)
if err != nil {
return nil, err
}

prefix := fmt.Sprintf("%s-", fi.StringValue(t.Name))

// @step: get the launch template versions for the templates we are interested in
var list []*ec2.LaunchTemplateVersion
var next *string
for _, x := range templates {
err := func() error {
for {
resp, err := cloud.EC2().DescribeLaunchTemplateVersions(&ec2.DescribeLaunchTemplateVersionsInput{
LaunchTemplateName: x.LaunchTemplateName,
NextToken: next,
})
if err != nil {
return err
}
list = append(list, resp.LaunchTemplateVersions...)
if resp.NextToken == nil {
return nil
}
if strings.HasPrefix(aws.StringValue(x.LaunchTemplateName), prefix) {
err := func() error {
for {
resp, err := cloud.EC2().DescribeLaunchTemplateVersions(&ec2.DescribeLaunchTemplateVersionsInput{
LaunchTemplateName: x.LaunchTemplateName,
NextToken: next,
})
if err != nil {
return err
}
list = append(list, resp.LaunchTemplateVersions...)
if resp.NextToken == nil {
return nil
}

next = resp.NextToken
next = resp.NextToken
}
}()
if err != nil {
return nil, err
}
}()
if err != nil {
return nil, err
}
}

return list, nil
}

// findLaunchTemplates returns a list of launch templates
func (t *LaunchTemplate) findLaunchTemplates(c *fi.Context) ([]*ec2.LaunchTemplateVersion, error) {
// @step: get a list of the launch templates
list, err := t.findAllLaunchTemplatesVersions(c)
if err != nil {
return nil, err
}
prefix := fmt.Sprintf("%s-", fi.StringValue(t.Name))

// @step: filter out the templates we are interested in
var filtered []*ec2.LaunchTemplateVersion
for _, x := range list {
if strings.HasPrefix(aws.StringValue(x.LaunchTemplateName), prefix) {
filtered = append(filtered, x)
}
}

// @step: we can sort the configurations in chronological order
sort.Slice(filtered, func(i, j int) bool {
ti := filtered[i].CreateTime
tj := filtered[j].CreateTime
// @step: sort the configurations in chronological order
sort.Slice(list, func(i, j int) bool {
ti := list[i].CreateTime
tj := list[j].CreateTime
if tj == nil {
return true
}
Expand All @@ -383,7 +368,7 @@ func (t *LaunchTemplate) findLaunchTemplates(c *fi.Context) ([]*ec2.LaunchTempla
return ti.UnixNano() < tj.UnixNano()
})

return filtered, nil
return list, nil
}

// findLatestLaunchTemplate returns the latest template
Expand Down

0 comments on commit 4e01432

Please sign in to comment.