osbuild-service-maintenance: clean up all regions

Since we started cloning images to different regions, the maintenance
script should clean up all of these regions.
This commit is contained in:
Sanne Raymaekers 2023-01-16 15:38:34 +01:00
parent dc1a770c0f
commit 2e3dd16220
3 changed files with 67 additions and 40 deletions

View file

@ -11,17 +11,30 @@ import (
"github.com/osbuild/osbuild-composer/internal/cloud/awscloud" "github.com/osbuild/osbuild-composer/internal/cloud/awscloud"
) )
func AWSCleanup(maxConcurrentRequests int, dryRun bool, accessKeyID, accessKey, region string, cutoff time.Time) error { func AWSCleanup(maxConcurrentRequests int, dryRun bool, accessKeyID, accessKey string, cutoff time.Time) error {
a, err := awscloud.New(region, accessKeyID, accessKey, "") a, err := awscloud.New("us-east-1", accessKeyID, accessKey, "")
if err != nil { if err != nil {
return err return err
} }
regions, err := a.Regions()
if err != nil {
return err
}
for _, region := range regions {
a, err := awscloud.New(region, accessKeyID, accessKey, "")
if err != nil {
logrus.Errorf("Unable to create new aws session for region %s: %v", region, err)
continue
}
var wg sync.WaitGroup var wg sync.WaitGroup
sem := semaphore.NewWeighted(int64(maxConcurrentRequests)) sem := semaphore.NewWeighted(int64(maxConcurrentRequests))
images, err := a.DescribeImagesByTag("Name", "composer-api-*") images, err := a.DescribeImagesByTag("Name", "composer-api-*")
if err != nil { if err != nil {
return err logrus.Errorf("Unable to describe images for region %s: %v", region, err)
continue
} }
for index, image := range images { for index, image := range images {
@ -66,7 +79,8 @@ func AWSCleanup(maxConcurrentRequests int, dryRun bool, accessKeyID, accessKey,
} }
}(index) }(index)
} }
wg.Wait() wg.Wait()
}
return nil return nil
} }

View file

@ -40,7 +40,7 @@ func main() {
} }
logrus.Info("Cleaning up AWS") logrus.Info("Cleaning up AWS")
err := AWSCleanup(conf.MaxConcurrentRequests, conf.DryRun, conf.AWSAccessKeyID, conf.AWSSecretAccessKey, "us-east-1", cutoff) err := AWSCleanup(conf.MaxConcurrentRequests, conf.DryRun, conf.AWSAccessKeyID, conf.AWSSecretAccessKey, cutoff)
if err != nil { if err != nil {
logrus.Errorf("AWS cleanup failed: %v", err) logrus.Errorf("AWS cleanup failed: %v", err)
} }

View file

@ -596,3 +596,16 @@ func (a *AWS) MarkS3ObjectAsPublic(bucket, objectKey string) error {
return nil return nil
} }
func (a *AWS) Regions() ([]string, error) {
out, err := a.ec2.DescribeRegions(&ec2.DescribeRegionsInput{})
if err != nil {
return nil, err
}
result := []string{}
for _, r := range out.Regions {
result = append(result, aws.StringValue(r.RegionName))
}
return result, nil
}