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  }