package main import "go.wit.com/log" /* this parses the command line arguements this enables command line options from other packages like 'gui' and '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"` } // Daemon bool `arg:"--daemon" help:"run in daemon mode"` // IgnoreCpu bool `arg:"--xml-ignore-cpu" default:"true" help:"ignore non-standard libvirt xml cpus"` // IgnoreBr bool `arg:"--xml-ignore-net" default:"true" help:"ignore network bridge name changes"` // IgnDisk bool `arg:"--xml-ignore-disk" default:"false" help:"ignore duplicate disk names"` // Save bool `arg:"--save" default:"false" help:"save protobuf config after import"` // Start string `arg:"--start" help:"start a droplet"` // Uptime bool `arg:"--uptime" default:"true" help:"allow uptime checks for things like Kuma"` // Hosts []string `arg:"--hosts" help:"hosts to connect to"` func (a args) Description() string { return ` virtigo will help control your cluster This maintains a master list of all your vm's (aka 'droplets') in your homelab cloud. You can import libvirt xml files. This app talks to your hypervisors via the virtigod daemon. At this time, this _only_ supports qcow2 images. If you need something else you'll have to add it in virtigolib. This runs a http server so you can control your virtual machines. For example to start a vm called 'www.wit.com' your cluster 'foo.bar.com': curl http://virtigo.foo.com/start?www.wit.com Use 'virtigoctl' to import xml files from libvirt and configure new hypervisors in your cluster. ` } func (args) Version() string { return "virtigo " + Version } var INFO *log.LogFlag var POLL *log.LogFlag var WARN *log.LogFlag var SPEW *log.LogFlag var EVENT *log.LogFlag func init() { full := "go.wit.com/apps/virtigo" short := "virtigo" INFO = log.NewFlag("INFO", false, full, short, "general virtigo") POLL = log.NewFlag("POLL", false, full, short, "virtigo polling") WARN = log.NewFlag("WARN", true, full, short, "bad things") SPEW = log.NewFlag("SPEW", true, full, short, "dump everything") EVENT = log.NewFlag("EVENT", true, full, short, "hypeprvisor/droplet events") }