From f9515280cf8ee5dd71be3b8e749e6405c4e77ca6 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Mon, 10 Mar 2025 04:36:35 -0500 Subject: make admin mode --- Makefile | 9 +++++---- argv.go | 8 +++++--- doAdminGui.go | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ exit.go | 24 ++++++++++++++++++++++++ main.go | 5 +++++ 5 files changed, 91 insertions(+), 7 deletions(-) create mode 100644 doAdminGui.go create mode 100644 exit.go diff --git a/Makefile b/Makefile index 09e702b..9a687c0 100644 --- a/Makefile +++ b/Makefile @@ -6,9 +6,7 @@ BUILDTIME = $(shell date +%Y.%m.%d) # create the go.mod and go.sum if this is a brand new repo REDOMOD = $(shell if [ -e go.sum ]; then echo go.sum exists; else GO111MODULE= go mod init; GO111MODULE= go mod tidy; fi) -all: build - ./virtigo --version - @#./virtigo --gui gocui +all: install @echo build worked build: goimports vet @@ -20,9 +18,12 @@ verbose: -ldflags "-X main.VERSION=${VERSION} -X main.BUILDTIME=${BUILDTIME} -X gui.GUIVERSION=${VERSION}" install: - GO111MODULE=off go install \ + GO111MODULE=off go install -v -x \ -ldflags "-X main.VERSION=${VERSION} -X main.BUILDTIME=${BUILDTIME} -X gui.GUIVERSION=${VERSION}" +andlabs: verbose + ./virtigo --gui andlabs + # makes a .deb package debian: rm -f ~/incoming/virtigo*deb diff --git a/argv.go b/argv.go index 67186e2..70adb00 100644 --- a/argv.go +++ b/argv.go @@ -11,9 +11,11 @@ import "go.wit.com/log" var argv args type args struct { - Xml []string `arg:"--libvirt" help:"import qemu xml files: --libvirt /etc/libvirt/qemu/*.xml"` - Config string `arg:"env:VIRTIGO_HOME" help:"defaults to ~/.config/virtigo/"` - Port int `arg:"--port" default:"8080" help:"allow droplet events via http"` + Verbose bool `arg:"--verbose" help:"talk more"` + Config string `arg:"env:VIRTIGO_HOME" help:"defaults to ~/.config/virtigo/"` + Port int `arg:"--port" default:"8080" help:"allow droplet events via http"` + Server string `arg:"env:VIRTIGO_SERVER" help:"what virtigo cluster to connect to"` + Xml []string `arg:"--libvirt" help:"import qemu xml files: --libvirt /etc/libvirt/qemu/*.xml"` } // Daemon bool `arg:"--daemon" help:"run in daemon mode"` diff --git a/doAdminGui.go b/doAdminGui.go new file mode 100644 index 0000000..20d6351 --- /dev/null +++ b/doAdminGui.go @@ -0,0 +1,52 @@ +// Copyright 2017-2025 WIT.COM Inc. All rights reserved. +// Use of this source code is governed by the GPL 3.0 + +package main + +// An app to submit patches for the 30 GO GUI repos + +import ( + "os" + "time" + + "go.wit.com/gui" + "go.wit.com/lib/gadgets" + "go.wit.com/log" +) + +// refresh the windows & tables the user has open +func refresh() { + time.Sleep(90 * time.Second) + if argv.Verbose { + log.Info("virtigo scan here") + } +} + +func doAdminGui() { + me.myGui = gui.New() + me.myGui.InitEmbed(resources) + me.myGui.Default() + + win := gadgets.NewGenericWindow("Virtigo: (run your cluster)", "virtigo stuff") + win.Custom = func() { + log.Warn("Main window close") + os.Exit(0) + } + + grid := win.Group.RawGrid() + + grid.NewButton("show hyperbisors", func() { + }) + + grid.NewButton("show droplets", func() { + }) + + grid.NewButton("clean exit", func() { + okExit("admin close") + }) + + // sit here forever refreshing the GUI + for { + refresh() + } +} diff --git a/exit.go b/exit.go new file mode 100644 index 0000000..4a39635 --- /dev/null +++ b/exit.go @@ -0,0 +1,24 @@ +// Copyright 2017-2025 WIT.COM Inc. All rights reserved. +// Use of this source code is governed by the GPL 3.0 + +package main + +import ( + "os" + + "go.wit.com/log" +) + +func okExit(note string) { + if note != "" { + log.Info("virtigo exit:", note, "ok") + } + me.myGui.Close() + os.Exit(0) +} + +func badExit(err error) { + log.Info("virtigo failed: ", err) + me.myGui.Close() + os.Exit(-1) +} diff --git a/main.go b/main.go index fe35788..843278e 100644 --- a/main.go +++ b/main.go @@ -37,6 +37,11 @@ func main() { os.Setenv("VIRTIGO_HOME", fullpath) } + if argv.Server != "" { + doAdminGui() + okExit("admin close") + } + // set defaults me.unstable = time.Now() // initialize the grid as unstable me.changed = false -- cgit v1.2.3