github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/cmd/imagetool/expiration.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "time" 6 7 "github.com/Cloud-Foundations/Dominator/imageserver/client" 8 "github.com/Cloud-Foundations/Dominator/lib/format" 9 "github.com/Cloud-Foundations/Dominator/lib/log" 10 "github.com/Cloud-Foundations/Dominator/lib/srpc" 11 ) 12 13 func changeImageExpirationSubcommand(args []string, 14 logger log.DebugLogger) error { 15 imageSClient, _ := getClients() 16 err := changeImageExpiration(imageSClient, args[0]) 17 if err != nil { 18 return fmt.Errorf("Error changing image expiration: %s", err) 19 } 20 return nil 21 } 22 23 func changeImageExpiration(imageSClient *srpc.Client, name string) error { 24 var expiresAt time.Time 25 if *expiresIn > 0 { 26 expiresAt = time.Now().Add(*expiresIn) 27 } 28 return client.ChangeImageExpiration(imageSClient, name, expiresAt) 29 } 30 31 func getImageExpirationSubcommand(args []string, logger log.DebugLogger) error { 32 imageSClient, _ := getClients() 33 if err := getImageExpiration(imageSClient, args[0]); err != nil { 34 return fmt.Errorf("Error getting image expiration: %s", err) 35 } 36 return nil 37 } 38 39 func getImageExpiration(imageSClient *srpc.Client, name string) error { 40 expiresAt, err := client.GetImageExpiration(imageSClient, name) 41 if err != nil { 42 return err 43 } 44 if expiresAt.IsZero() { 45 fmt.Println("image does not expire") 46 } else if timeLeft := time.Until(expiresAt); timeLeft < 0 { 47 fmt.Printf("image expired at %s (%s ago)\n", expiresAt, 48 format.Duration(-timeLeft)) 49 } else { 50 fmt.Printf("image expires at %s (in %s)\n", expiresAt, 51 format.Duration(timeLeft)) 52 } 53 return nil 54 }