diff --git a/Makefile b/Makefile index 56e04b3..f01a705 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,7 @@ REDOMOD = $(shell if [ -e go.sum ]; then echo go.sum exists; else GO111MODULE= all: install @echo build worked virtigo list droplets + virtigo list droplets --on build: goimports vet GO111MODULE=off go build \ @@ -117,3 +118,6 @@ protogen: gocui: install virtigo --gui gocui --gui-verbose --gui-file ../../toolkits/gocui/gocui.so >/tmp/forge.log 2>&1 + +log: + journalctl -f -xeu virtigod.service diff --git a/argv.go b/argv.go index a1d2862..7ab034c 100644 --- a/argv.go +++ b/argv.go @@ -28,8 +28,9 @@ type EmptyCmd struct { type testCmd string type ListCmd struct { - Droplets *EmptyCmd `arg:"subcommand:droplets" help:"list droplets"` - Hypervisors *EmptyCmd `arg:"subcommand:hypervisors" help:"list hypervisors"` + Droplets *EmptyCmd `arg:"subcommand:droplets" help:"list droplets"` + Hypervisors *EmptyCmd `arg:"subcommand:hypervisors" help:"list hypervisors"` + On bool `arg:"--on" help:"only show things that are on"` } func (a args) Description() string { diff --git a/doAdminGui.go b/doAdminGui.go index 11d02f0..4433919 100644 --- a/doAdminGui.go +++ b/doAdminGui.go @@ -171,7 +171,7 @@ func (admin *adminT) doAdminGui() { for c := range me.clusters.IterAll() { a := new(adminT) me.cmap[c] = a - log.Info("found in the config file", c.URL) + log.Info("found in the config file", c.URL[0]) a.makeClusterGroup(c) } @@ -184,7 +184,7 @@ func (admin *adminT) doAdminGui() { func (admin *adminT) makeClusterGroup(c *virtpb.Cluster) { var err error - admin.url, err = url.Parse(c.URL) + admin.url, err = url.Parse(c.URL[0]) if err != nil { badExit(err) } diff --git a/doList.go b/doList.go index ee2eeea..ef2ae5d 100644 --- a/doList.go +++ b/doList.go @@ -6,7 +6,6 @@ package main // An app to submit patches for the 30 GO GUI repos import ( - "fmt" "net/http" "net/url" "time" @@ -15,52 +14,6 @@ import ( "go.wit.com/log" ) -// refresh the windows & tables the user has open -func doListDroplets() { - /* - // update the droplet list - if data, err := postData(admin.url.String()+"/DropletsPB", msg); err != nil { - log.Info("/DropletsPB Error:", err) - } else { - fmt.Println("DropletsPB Response len:", len(data)) - admin.droplets = new(virtpb.Droplets) - if err := admin.droplets.Unmarshal(data); err != nil { - fmt.Println("droplets marshal failed", err) - return - } - fmt.Println("Droplet len=", admin.droplets.Len()) - } - - // update the hypervisor list - if data, err := postData(admin.url.String()+"/HypervisorsPB", msg); err != nil { - log.Info("Error:", err) - } else { - fmt.Println("HypervisorsPB Response len:", len(data)) - admin.hypervisors = new(virtpb.Hypervisors) - if err := admin.hypervisors.Unmarshal(data); err != nil { - fmt.Println("hypervisors marshal failed", err) - return - } - fmt.Println("Hypervisors len=", admin.hypervisors.Len()) - } - - // update the events list - if data, err := postData(admin.url.String()+"/EventsPB", msg); err != nil { - log.Info("Error:", err) - } else { - fmt.Println("EventsPB Response len:", len(data)) - admin.events = new(virtpb.Events) - if err := admin.events.Unmarshal(data); err != nil { - fmt.Println("events marshal failed", err) - return - } - fmt.Println("Events len=", admin.events.Len()) - } - */ -} - -// var client *http.Client - func doList() { msg := []byte(`{"message": "Hello"}`) @@ -77,26 +30,39 @@ func doList() { var err error admin := new(adminT) me.cmap[c] = admin - log.Info("found in the config file", c.URL) + log.Info("found in the config file", c.URL[0]) // a.makeClusterGroup(c) - admin.url, err = url.Parse(c.URL) + admin.url, err = url.Parse(c.URL[0]) if err != nil { badExit(err) } + // update the droplet list if data, err := postData(admin.url.String()+"/DropletsPB", msg); err != nil { log.Info("/DropletsPB Error:", err) + continue } else { - fmt.Println("DropletsPB Response len:", len(data)) admin.droplets = new(virtpb.Droplets) if err := admin.droplets.Unmarshal(data); err != nil { - fmt.Println("droplets marshal failed", err) - return + log.Printf("DropletsPB Response len:%d\n", len(data)) + log.Println("droplets marshal failed", err) + continue } - fmt.Println("Droplet len=", admin.droplets.Len()) } + log.Printf("Cluster Name: %s\n", c.Name) + log.Printf("Number of Droplets: %d\n", admin.droplets.Len()) + var found *virtpb.Droplets + found = virtpb.NewDroplets() + all := admin.droplets.All() + for all.Scan() { + vm := all.Next() + if argv.List.On && (vm.Current.State == virtpb.DropletState_OFF) { + continue + } + found.Append(vm) + log.Info(vm.SprintHeader()) + } + log.Println("On Droplet count=", found.Len()) } - - // sit here forever refreshing the GUI } diff --git a/main.go b/main.go index 1ca73f1..ee3182e 100644 --- a/main.go +++ b/main.go @@ -87,7 +87,7 @@ func main() { clusters := virtpb.NewClusters() c := new(virtpb.Cluster) c.Uuid = uuid.New().String() - c.URL = argv.Server + c.URL = append(c.URL, argv.Server) clusters.Append(c) virtpb.ConfigWriteTEXT(clusters, "cluster.text")