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:
parent
dc1a770c0f
commit
2e3dd16220
3 changed files with 67 additions and 40 deletions
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue