From e35b47fd5f098be0a7a9c4615cd1e7858251ae99 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Fri, 11 Oct 2024 23:06:47 -0500 Subject: [PATCH] restructure code Signed-off-by: Jeff Carr --- hypervisior.go | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++ main.go | 77 +++-------------------------------------- 2 files changed, 98 insertions(+), 73 deletions(-) create mode 100644 hypervisior.go diff --git a/hypervisior.go b/hypervisior.go new file mode 100644 index 0000000..02ee539 --- /dev/null +++ b/hypervisior.go @@ -0,0 +1,94 @@ +// Copyright 2016 The go-qemu Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package main + +import ( + "fmt" + "log" + + hypervisor "github.com/digitalocean/go-qemu/hypervisor" + "github.com/digitalocean/go-qemu/qemu" +) + +func poolHypervisor(hv *hypervisor.Hypervisor) { + // fmt.Printf("\n**********Domains**********\n") + domains, err := hv.Domains() + if err != nil { + log.Fatalf("Unable to get domains from hypervisor: %v", err) + } + for _, dom := range domains { + var name string + var err error + var drives []string + var status qemu.Status + name = dom.Name + // fmt.Printf("%s\n", dom.Name) + status, err = dom.Status() + if err != nil { + fmt.Println(name, status, err) + continue + } + // fmt.Printf("\nStatus: %s\n", status) + /* + if status == qemu.StatusRunning { + // getBlockDevices(dom) + // fmt.Println(name, status, err) + } + */ + blockDevices, err := dom.BlockDevices() + for _, blockDevice := range blockDevices { + drives = append(drives, blockDevice.Device) + drives = append(drives, blockDevice.Inserted.Driver) + drives = append(drives, blockDevice.Inserted.File) + // fmt.Printf("%20s %8s %30s\n", + // blockDevice.Device, blockDevice.Inserted.Driver, blockDevice.Inserted.File) + } + if status == qemu.StatusRunning { + fmt.Println("ON ", name, drives) + } else { + fmt.Println("OFF", status, name, drives) + } + } +} + +func displayBlockDevices(domain *qemu.Domain) { + // var []blks string + blockDevices, err := domain.BlockDevices() + if err != nil { + log.Fatalf("Error getting blockDevices: %v\n", blockDevices) + } + fmt.Printf("\n[ BlockDevices ]\n") + fmt.Printf("========================================================================\n") + fmt.Printf("%20s %8s %30s\n", "Device", "Driver", "File") + fmt.Printf("========================================================================\n") + for _, blockDevice := range blockDevices { + fmt.Printf("%20s %8s %30s\n", + blockDevice.Device, blockDevice.Inserted.Driver, blockDevice.Inserted.File) + } +} + +func displayPCIDevices(domain *qemu.Domain) { + pciDevices, err := domain.PCIDevices() + if err != nil { + log.Fatalf("Error getting PCIDevices: %v\n", pciDevices) + } + fmt.Printf("\n[ PCIDevices ]\n") + fmt.Printf("======================================\n") + fmt.Printf("%10s %20s\n", "[ID]", "[Description]") + fmt.Printf("======================================\n") + for _, pciDevice := range pciDevices { + fmt.Printf("[%10s] [%20s]\n", pciDevice.QdevID, pciDevice.ClassInfo.Desc) + } +} diff --git a/main.go b/main.go index b3057fb..5525b36 100644 --- a/main.go +++ b/main.go @@ -17,13 +17,10 @@ package main import ( "embed" "flag" - "fmt" - "log" "net" "time" hypervisor "github.com/digitalocean/go-qemu/hypervisor" - "github.com/digitalocean/go-qemu/qemu" ) var Version string @@ -31,6 +28,8 @@ var Version string //go:embed resources/* var resources embed.FS +var hv *hypervisor.Hypervisor + func main() { flag.Parse() @@ -42,77 +41,9 @@ func main() { } driver := hypervisor.NewRPCDriver(newConn) - hv := hypervisor.New(driver) + hv = hypervisor.New(driver) - // fmt.Printf("\n**********Domains**********\n") - domains, err := hv.Domains() - if err != nil { - log.Fatalf("Unable to get domains from hypervisor: %v", err) - } - for _, dom := range domains { - var name string - var err error - var drives []string - var status qemu.Status - name = dom.Name - // fmt.Printf("%s\n", dom.Name) - status, err = dom.Status() - if err != nil { - fmt.Println(name, status, err) - continue - } - // fmt.Printf("\nStatus: %s\n", status) - /* - if status == qemu.StatusRunning { - // getBlockDevices(dom) - // fmt.Println(name, status, err) - } - */ - blockDevices, err := dom.BlockDevices() - for _, blockDevice := range blockDevices { - drives = append(drives, blockDevice.Device) - drives = append(drives, blockDevice.Inserted.Driver) - drives = append(drives, blockDevice.Inserted.File) - // fmt.Printf("%20s %8s %30s\n", - // blockDevice.Device, blockDevice.Inserted.Driver, blockDevice.Inserted.File) - } - if status == qemu.StatusRunning { - fmt.Println("ON ", name, drives) - } else { - fmt.Println("OFF", status, name, drives) - } - } - // fmt.Printf("\n***************************\n") + poolHypervisor(hv) startHTTP() } - -func displayBlockDevices(domain *qemu.Domain) { - // var []blks string - blockDevices, err := domain.BlockDevices() - if err != nil { - log.Fatalf("Error getting blockDevices: %v\n", blockDevices) - } - fmt.Printf("\n[ BlockDevices ]\n") - fmt.Printf("========================================================================\n") - fmt.Printf("%20s %8s %30s\n", "Device", "Driver", "File") - fmt.Printf("========================================================================\n") - for _, blockDevice := range blockDevices { - fmt.Printf("%20s %8s %30s\n", - blockDevice.Device, blockDevice.Inserted.Driver, blockDevice.Inserted.File) - } -} - -func displayPCIDevices(domain *qemu.Domain) { - pciDevices, err := domain.PCIDevices() - if err != nil { - log.Fatalf("Error getting PCIDevices: %v\n", pciDevices) - } - fmt.Printf("\n[ PCIDevices ]\n") - fmt.Printf("======================================\n") - fmt.Printf("%10s %20s\n", "[ID]", "[Description]") - fmt.Printf("======================================\n") - for _, pciDevice := range pciDevices { - fmt.Printf("[%10s] [%20s]\n", pciDevice.QdevID, pciDevice.ClassInfo.Desc) - } -}