summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-03-10 04:36:35 -0500
committerJeff Carr <[email protected]>2025-03-10 04:36:35 -0500
commitf9515280cf8ee5dd71be3b8e749e6405c4e77ca6 (patch)
tree6290b07ea07284ec0234146cb3a193a7dbd6c80c
parent30a5eb56a210c28feca0098fd9e6dc340f494b9f (diff)
make admin mode
-rw-r--r--Makefile9
-rw-r--r--argv.go8
-rw-r--r--doAdminGui.go52
-rw-r--r--exit.go24
-rw-r--r--main.go5
5 files changed, 91 insertions, 7 deletions
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