diff options
| author | Jeff Carr <[email protected]> | 2024-10-11 23:06:47 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-10-11 23:06:47 -0500 |
| commit | e35b47fd5f098be0a7a9c4615cd1e7858251ae99 (patch) | |
| tree | c7b2a527e727f2472600c0e494ca7a49c5a0653e /hypervisior.go | |
| parent | 25f7aa1d22b332a168edbcc8bcd46308aca9c767 (diff) | |
restructure code
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'hypervisior.go')
| -rw-r--r-- | hypervisior.go | 94 |
1 files changed, 94 insertions, 0 deletions
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) + } +} |
