github.com/Cloud-Foundations/Dominator@v0.3.4/cmd/imagetool/listMdbImages.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/lib/stringutil" 9 "github.com/Cloud-Foundations/Dominator/lib/verstr" 10 "github.com/Cloud-Foundations/Dominator/proto/mdbserver" 11 ) 12 13 func listMdbImagesSubcommand(args []string, logger log.DebugLogger) error { 14 mdbdClient, err := dialMdbd() 15 if err != nil { 16 return err 17 } 18 if err := listMdbImages(mdbdClient); err != nil { 19 return fmt.Errorf("error listing MDB images: %s", err) 20 } 21 return nil 22 } 23 24 func listMdbImages(mdbdClient *srpc.Client) error { 25 request := mdbserver.ListImagesRequest{} 26 var reply mdbserver.ListImagesResponse 27 err := mdbdClient.RequestReply("MdbServer.ListImages", request, &reply) 28 if err != nil { 29 return err 30 } 31 imageNames := make(map[string]struct{}, 32 len(reply.PlannedImages)+len(reply.RequiredImages)) 33 for _, imageName := range reply.PlannedImages { 34 imageNames[imageName] = struct{}{} 35 } 36 for _, imageName := range reply.RequiredImages { 37 imageNames[imageName] = struct{}{} 38 } 39 names := stringutil.ConvertMapKeysToList(imageNames, false) 40 verstr.Sort(names) 41 for _, name := range names { 42 fmt.Println(name) 43 } 44 return nil 45 }