Skip to content

Commit 6116713

Browse files
committed
mantle: Expand openstack gc to keypairs
1 parent a13cf77 commit 6116713

File tree

2 files changed

+29
-2
lines changed
  • mantle

2 files changed

+29
-2
lines changed

mantle/cmd/ore/openstack/gc.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ var (
2626
cmdGC = &cobra.Command{
2727
Use: "gc",
2828
Short: "GC resources in OpenStack",
29-
Long: `Delete instances created over the given duration ago`,
29+
Long: `Delete instances and keypairs created over the given duration ago`,
3030
RunE: runGC,
3131

3232
SilenceUsage: true,

mantle/platform/api/openstack/api.go

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,21 @@ func (a *API) DeleteKey(name string) error {
637637
return keypairs.Delete(a.computeClient, name, nil).ExtractErr()
638638
}
639639

640+
func (a *API) ListKeyPairs() ([]keypairs.KeyPair, error) {
641+
opts := keypairs.ListOpts{}
642+
// Retrieve all pages of keypairs
643+
allPages, err := keypairs.List(a.computeClient, opts).AllPages()
644+
if err != nil {
645+
return nil, fmt.Errorf("failed to fetch keypair pages: %w", err)
646+
}
647+
// Extract keypairs from the pages
648+
allKeyPairs, err := keypairs.ExtractKeyPairs(allPages)
649+
if err != nil {
650+
return nil, fmt.Errorf("failed to extract keypairs: %w", err)
651+
}
652+
return allKeyPairs, nil
653+
}
654+
640655
func (a *API) listServersWithMetadata(metadata map[string]string) ([]servers.Server, error) {
641656
pager := servers.List(a.computeClient, servers.ListOpts{})
642657

@@ -667,7 +682,7 @@ func (a *API) listServersWithMetadata(metadata map[string]string) ([]servers.Ser
667682

668683
func (a *API) GC(gracePeriod time.Duration) error {
669684
threshold := time.Now().Add(-gracePeriod)
670-
685+
// Clean up servers
671686
servers, err := a.listServersWithMetadata(map[string]string{
672687
"CreatedBy": "mantle",
673688
})
@@ -683,5 +698,17 @@ func (a *API) GC(gracePeriod time.Duration) error {
683698
return fmt.Errorf("couldn't delete server %s: %v", server.ID, err)
684699
}
685700
}
701+
// Clean up keypairs
702+
keypairs, err := a.ListKeyPairs()
703+
if err != nil {
704+
return err
705+
}
706+
for _, keypair := range keypairs {
707+
if strings.HasPrefix(keypair.Name, "kola-") {
708+
if err := a.DeleteKey(keypair.Name); err != nil {
709+
return fmt.Errorf("couldn't delete keypair %s: %v", keypair.Name, err)
710+
}
711+
}
712+
}
686713
return nil
687714
}

0 commit comments

Comments
 (0)