Skip to content

Commit bf469d8

Browse files
committed
mantle: Expand openstack gc to keypairs
1 parent 49ce2cb commit bf469d8

File tree

2 files changed

+30
-2
lines changed
  • mantle

2 files changed

+30
-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: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,22 @@ 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+
655+
640656
func (a *API) listServersWithMetadata(metadata map[string]string) ([]servers.Server, error) {
641657
pager := servers.List(a.computeClient, servers.ListOpts{})
642658

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

668684
func (a *API) GC(gracePeriod time.Duration) error {
669685
threshold := time.Now().Add(-gracePeriod)
670-
686+
// Clean up servers
671687
servers, err := a.listServersWithMetadata(map[string]string{
672688
"CreatedBy": "mantle",
673689
})
@@ -683,5 +699,17 @@ func (a *API) GC(gracePeriod time.Duration) error {
683699
return fmt.Errorf("couldn't delete server %s: %v", server.ID, err)
684700
}
685701
}
702+
// Clean up keypairs
703+
keypairs, err := a.ListKeyPairs()
704+
if err != nil {
705+
return err
706+
}
707+
for _, keypair := range keypairs {
708+
if strings.HasPrefix(keypair.Name, "kola-") {
709+
if err := a.DeleteKey(keypair.Name); err != nil {
710+
return fmt.Errorf("couldn't delete keypair %s: %v", keypair.Name, err)
711+
}
712+
}
713+
}
686714
return nil
687715
}

0 commit comments

Comments
 (0)