github.com/Cloud-Foundations/Dominator@v0.3.4/cmd/subtool/cleanup.go (about) 1 package main 2 3 import ( 4 "fmt" 5 6 "github.com/Cloud-Foundations/Dominator/lib/log" 7 "github.com/Cloud-Foundations/Dominator/lib/srpc" 8 "github.com/Cloud-Foundations/Dominator/proto/sub" 9 "github.com/Cloud-Foundations/Dominator/sub/client" 10 ) 11 12 func cleanupSubcommand(args []string, logger log.DebugLogger) error { 13 srpcClient := getSubClient(logger) 14 defer srpcClient.Close() 15 if err := cleanup(srpcClient, 0, false); err != nil { 16 return fmt.Errorf("error cleaning up: %s", err) 17 } 18 return nil 19 } 20 21 func cleanup(srpcClient *srpc.Client, haveGeneration uint64, 22 alwaysCleanup bool) error { 23 request := sub.PollRequest{ 24 HaveGeneration: haveGeneration, 25 } 26 var reply sub.PollResponse 27 if err := client.CallPoll(srpcClient, request, &reply); err != nil { 28 return err 29 } 30 if len(reply.ObjectCache) < 1 && !alwaysCleanup { 31 return nil 32 } 33 logger.Printf("Deleting: %d objects\n", len(reply.ObjectCache)) 34 return client.Cleanup(srpcClient, reply.ObjectCache) 35 }