make admin mode

This commit is contained in:
Jeff Carr 2025-03-10 04:36:35 -05:00
parent 30a5eb56a2
commit f9515280cf
5 changed files with 91 additions and 7 deletions

View File

@ -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

View File

@ -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"`

52
doAdminGui.go Normal file
View File

@ -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()
}
}

24
exit.go Normal file
View File

@ -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)
}

View File

@ -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