libvirt

package
v0.0.0-...-bbc0b7c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 8, 2023 License: AGPL-3.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Dom

type Dom struct {
	Dom libvirt.Domain
}

Domain is a Virtual Machine in libvirt

type DomSpecs

type DomSpecs struct {
	XMLName  xml.Name `xml:"domain"`
	Text     string   `xml:",chardata"`
	Type     string   `xml:"type,attr"`
	ID       string   `xml:"id,attr"`
	Name     string   `xml:"name"`
	Uuid     string   `xml:"uuid"`
	Metadata struct {
		Text      string `xml:",chardata"`
		Libosinfo struct {
			Text      string `xml:",chardata"`
			Libosinfo string `xml:"libosinfo,attr"`
			Os        struct {
				Text string `xml:",chardata"`
				ID   string `xml:"id,attr"`
			} `xml:"os"`
		} `xml:"libosinfo"`
	} `xml:"metadata"`
	Memory struct {
		Text string `xml:",chardata"`
		Unit string `xml:"unit,attr"`
	} `xml:"memory"`
	CurrentMemory struct {
		Text string `xml:",chardata"`
		Unit string `xml:"unit,attr"`
	} `xml:"currentMemory"`
	Vcpu struct {
		Text      string `xml:",chardata"`
		Placement string `xml:"placement,attr"`
	} `xml:"vcpu"`
	Resource struct {
		Text      string `xml:",chardata"`
		Partition string `xml:"partition"`
	} `xml:"resource"`
	Os struct {
		Text string `xml:",chardata"`
		Type struct {
			Text    string `xml:",chardata"`
			Arch    string `xml:"arch,attr"`
			Machine string `xml:"machine,attr"`
		} `xml:"type"`
		Boot []struct {
			Text string `xml:",chardata"`
			Dev  string `xml:"dev,attr"`
		} `xml:"boot"`
	} `xml:"os"`
	Features struct {
		Text string `xml:",chardata"`
		Acpi string `xml:"acpi"`
		Apic string `xml:"apic"`
	} `xml:"features"`
	Cpu struct {
		Text  string `xml:",chardata"`
		Mode  string `xml:"mode,attr"`
		Match string `xml:"match,attr"`
		Check string `xml:"check,attr"`
		Model struct {
			Text     string `xml:",chardata"`
			Fallback string `xml:"fallback,attr"`
		} `xml:"model"`
		Vendor  string `xml:"vendor"`
		Feature []struct {
			Text   string `xml:",chardata"`
			Policy string `xml:"policy,attr"`
			Name   string `xml:"name,attr"`
		} `xml:"feature"`
	} `xml:"cpu"`
	Clock struct {
		Text   string `xml:",chardata"`
		Offset string `xml:"offset,attr"`
		Timer  []struct {
			Text       string `xml:",chardata"`
			Name       string `xml:"name,attr"`
			Tickpolicy string `xml:"tickpolicy,attr"`
			Present    string `xml:"present,attr"`
		} `xml:"timer"`
	} `xml:"clock"`
	OnPoweroff string `xml:"on_poweroff"`
	OnReboot   string `xml:"on_reboot"`
	OnCrash    string `xml:"on_crash"`
	Pm         struct {
		Text         string `xml:",chardata"`
		SuspendToMem struct {
			Text    string `xml:",chardata"`
			Enabled string `xml:"enabled,attr"`
		} `xml:"suspend-to-mem"`
		SuspendToDisk struct {
			Text    string `xml:",chardata"`
			Enabled string `xml:"enabled,attr"`
		} `xml:"suspend-to-disk"`
	} `xml:"pm"`
	Devices struct {
		Text     string `xml:",chardata"`
		Emulator string `xml:"emulator"`
		Disk     []struct {
			Text   string `xml:",chardata"`
			Type   string `xml:"type,attr"`
			Device string `xml:"device,attr"`
			Driver struct {
				Text string `xml:",chardata"`
				Name string `xml:"name,attr"`
				Type string `xml:"type,attr"`
			} `xml:"driver"`
			Source struct {
				Text  string `xml:",chardata"`
				File  string `xml:"file,attr"`
				Index string `xml:"index,attr"`
			} `xml:"source"`
			BackingStore string `xml:"backingStore"`
			Target       struct {
				Text string `xml:",chardata"`
				Dev  string `xml:"dev,attr"`
				Bus  string `xml:"bus,attr"`
			} `xml:"target"`
			Alias struct {
				Text string `xml:",chardata"`
				Name string `xml:"name,attr"`
			} `xml:"alias"`
			Address struct {
				Text       string `xml:",chardata"`
				Type       string `xml:"type,attr"`
				Domain     string `xml:"domain,attr"`
				Bus        string `xml:"bus,attr"`
				Slot       string `xml:"slot,attr"`
				Function   string `xml:"function,attr"`
				Controller string `xml:"controller,attr"`
				Target     string `xml:"target,attr"`
				Unit       string `xml:"unit,attr"`
			} `xml:"address"`
			Readonly string `xml:"readonly"`
		} `xml:"disk"`
		Controller []struct {
			Text      string `xml:",chardata"`
			Type      string `xml:"type,attr"`
			Index     string `xml:"index,attr"`
			AttrModel string `xml:"model,attr"`
			Ports     string `xml:"ports,attr"`
			Alias     struct {
				Text string `xml:",chardata"`
				Name string `xml:"name,attr"`
			} `xml:"alias"`
			Address struct {
				Text          string `xml:",chardata"`
				Type          string `xml:"type,attr"`
				Domain        string `xml:"domain,attr"`
				Bus           string `xml:"bus,attr"`
				Slot          string `xml:"slot,attr"`
				Function      string `xml:"function,attr"`
				Multifunction string `xml:"multifunction,attr"`
			} `xml:"address"`
			Model struct {
				Text string `xml:",chardata"`
				Name string `xml:"name,attr"`
			} `xml:"model"`
			Target struct {
				Text    string `xml:",chardata"`
				Chassis string `xml:"chassis,attr"`
				Port    string `xml:"port,attr"`
			} `xml:"target"`
		} `xml:"controller"`
		Interface struct {
			Text string `xml:",chardata"`
			Type string `xml:"type,attr"`
			Mac  struct {
				Text    string `xml:",chardata"`
				Address string `xml:"address,attr"`
			} `xml:"mac"`
			Source struct {
				Text   string `xml:",chardata"`
				Bridge string `xml:"bridge,attr"`
			} `xml:"source"`
			Target struct {
				Text string `xml:",chardata"`
				Dev  string `xml:"dev,attr"`
			} `xml:"target"`
			Model struct {
				Text string `xml:",chardata"`
				Type string `xml:"type,attr"`
			} `xml:"model"`
			Alias struct {
				Text string `xml:",chardata"`
				Name string `xml:"name,attr"`
			} `xml:"alias"`
			Address struct {
				Text     string `xml:",chardata"`
				Type     string `xml:"type,attr"`
				Domain   string `xml:"domain,attr"`
				Bus      string `xml:"bus,attr"`
				Slot     string `xml:"slot,attr"`
				Function string `xml:"function,attr"`
			} `xml:"address"`
		} `xml:"interface"`
		Serial struct {
			Text   string `xml:",chardata"`
			Type   string `xml:"type,attr"`
			Source struct {
				Text string `xml:",chardata"`
				Path string `xml:"path,attr"`
			} `xml:"source"`
			Target struct {
				Text  string `xml:",chardata"`
				Type  string `xml:"type,attr"`
				Port  string `xml:"port,attr"`
				Model struct {
					Text string `xml:",chardata"`
					Name string `xml:"name,attr"`
				} `xml:"model"`
			} `xml:"target"`
			Alias struct {
				Text string `xml:",chardata"`
				Name string `xml:"name,attr"`
			} `xml:"alias"`
		} `xml:"serial"`
		Console struct {
			Text   string `xml:",chardata"`
			Type   string `xml:"type,attr"`
			Tty    string `xml:"tty,attr"`
			Source struct {
				Text string `xml:",chardata"`
				Path string `xml:"path,attr"`
			} `xml:"source"`
			Target struct {
				Text string `xml:",chardata"`
				Type string `xml:"type,attr"`
				Port string `xml:"port,attr"`
			} `xml:"target"`
			Alias struct {
				Text string `xml:",chardata"`
				Name string `xml:"name,attr"`
			} `xml:"alias"`
		} `xml:"console"`
		Channel struct {
			Text   string `xml:",chardata"`
			Type   string `xml:"type,attr"`
			Source struct {
				Text string `xml:",chardata"`
				Mode string `xml:"mode,attr"`
				Path string `xml:"path,attr"`
			} `xml:"source"`
			Target struct {
				Text  string `xml:",chardata"`
				Type  string `xml:"type,attr"`
				Name  string `xml:"name,attr"`
				State string `xml:"state,attr"`
			} `xml:"target"`
			Alias struct {
				Text string `xml:",chardata"`
				Name string `xml:"name,attr"`
			} `xml:"alias"`
			Address struct {
				Text       string `xml:",chardata"`
				Type       string `xml:"type,attr"`
				Controller string `xml:"controller,attr"`
				Bus        string `xml:"bus,attr"`
				Port       string `xml:"port,attr"`
			} `xml:"address"`
		} `xml:"channel"`
		Input []struct {
			Text  string `xml:",chardata"`
			Type  string `xml:"type,attr"`
			Bus   string `xml:"bus,attr"`
			Alias struct {
				Text string `xml:",chardata"`
				Name string `xml:"name,attr"`
			} `xml:"alias"`
			Address struct {
				Text string `xml:",chardata"`
				Type string `xml:"type,attr"`
				Bus  string `xml:"bus,attr"`
				Port string `xml:"port,attr"`
			} `xml:"address"`
		} `xml:"input"`
		Graphics []struct {
			Text       string `xml:",chardata"`
			Type       string `xml:"type,attr"`
			Port       string `xml:"port,attr"`
			Autoport   string `xml:"autoport,attr"`
			Websocket  string `xml:"websocket,attr"`
			AttrListen string `xml:"listen,attr"`
			Listen     struct {
				Text    string `xml:",chardata"`
				Type    string `xml:"type,attr"`
				Address string `xml:"address,attr"`
			} `xml:"listen"`
		} `xml:"graphics"`
		Video struct {
			Text  string `xml:",chardata"`
			Model struct {
				Text    string `xml:",chardata"`
				Type    string `xml:"type,attr"`
				Vram    string `xml:"vram,attr"`
				Heads   string `xml:"heads,attr"`
				Primary string `xml:"primary,attr"`
			} `xml:"model"`
			Alias struct {
				Text string `xml:",chardata"`
				Name string `xml:"name,attr"`
			} `xml:"alias"`
			Address struct {
				Text     string `xml:",chardata"`
				Type     string `xml:"type,attr"`
				Domain   string `xml:"domain,attr"`
				Bus      string `xml:"bus,attr"`
				Slot     string `xml:"slot,attr"`
				Function string `xml:"function,attr"`
			} `xml:"address"`
		} `xml:"video"`
		Memballoon struct {
			Text  string `xml:",chardata"`
			Model string `xml:"model,attr"`
			Alias struct {
				Text string `xml:",chardata"`
				Name string `xml:"name,attr"`
			} `xml:"alias"`
			Address struct {
				Text     string `xml:",chardata"`
				Type     string `xml:"type,attr"`
				Domain   string `xml:"domain,attr"`
				Bus      string `xml:"bus,attr"`
				Slot     string `xml:"slot,attr"`
				Function string `xml:"function,attr"`
			} `xml:"address"`
		} `xml:"memballoon"`
		Rng struct {
			Text    string `xml:",chardata"`
			Model   string `xml:"model,attr"`
			Backend struct {
				Text  string `xml:",chardata"`
				Model string `xml:"model,attr"`
			} `xml:"backend"`
			Alias struct {
				Text string `xml:",chardata"`
				Name string `xml:"name,attr"`
			} `xml:"alias"`
			Address struct {
				Text     string `xml:",chardata"`
				Type     string `xml:"type,attr"`
				Domain   string `xml:"domain,attr"`
				Bus      string `xml:"bus,attr"`
				Slot     string `xml:"slot,attr"`
				Function string `xml:"function,attr"`
			} `xml:"address"`
		} `xml:"rng"`
	} `xml:"devices"`
	Seclabel []struct {
		Text       string `xml:",chardata"`
		Type       string `xml:"type,attr"`
		Model      string `xml:"model,attr"`
		Relabel    string `xml:"relabel,attr"`
		Label      string `xml:"label"`
		Imagelabel string `xml:"imagelabel"`
	} `xml:"seclabel"`
}

Generated from https://www.onlinetool.io/xmltogo/

type HVNicSpecs

type HVNicSpecs struct {
	XMLName  xml.Name `xml:"interface"`
	Text     string   `xml:",chardata"`
	Type     string   `xml:"type,attr"`
	Name     string   `xml:"name,attr"`
	Protocol []struct {
		Text   string `xml:",chardata"`
		Family string `xml:"family,attr"`
		Ip     struct {
			Text    string `xml:",chardata"`
			Address string `xml:"address,attr"`
			Prefix  string `xml:"prefix,attr"`
		} `xml:"ip"`
	} `xml:"protocol"`
	Bridge struct {
		Text      string `xml:",chardata"`
		Interface struct {
			Text string `xml:",chardata"`
			Type string `xml:"type,attr"`
			Name string `xml:"name,attr"`
			Link struct {
				Text  string `xml:",chardata"`
				Speed string `xml:"speed,attr"`
				State string `xml:"state,attr"`
			} `xml:"link"`
			Mac struct {
				Text    string `xml:",chardata"`
				Address string `xml:"address,attr"`
			} `xml:"mac"`
		} `xml:"interface"`
	} `xml:"bridge"`
}

type HVSpecs

type HVSpecs struct {
	XMLName xml.Name `xml:"sysinfo"`
	Text    string   `xml:",chardata"`
	Type    string   `xml:"type,attr"`
	Bios    struct {
		Text  string `xml:",chardata"`
		Entry []struct {
			Text string `xml:",chardata"`
			Name string `xml:"name,attr"`
		} `xml:"entry"`
	} `xml:"bios"`
	System struct {
		Text  string `xml:",chardata"`
		Entry []struct {
			Text string `xml:",chardata"`
			Name string `xml:"name,attr"`
		} `xml:"entry"`
	} `xml:"system"`
	BaseBoard struct {
		Text  string `xml:",chardata"`
		Entry []struct {
			Text string `xml:",chardata"`
			Name string `xml:"name,attr"`
		} `xml:"entry"`
	} `xml:"baseBoard"`
	Chassis struct {
		Text  string `xml:",chardata"`
		Entry []struct {
			Text string `xml:",chardata"`
			Name string `xml:"name,attr"`
		} `xml:"entry"`
	} `xml:"chassis"`
	Processor struct {
		Text  string `xml:",chardata"`
		Entry []struct {
			Text string `xml:",chardata"`
			Name string `xml:"name,attr"`
		} `xml:"entry"`
	} `xml:"processor"`
	MemoryDevice []struct {
		Text  string `xml:",chardata"`
		Entry []struct {
			Text string `xml:",chardata"`
			Name string `xml:"name,attr"`
		} `xml:"entry"`
	} `xml:"memory_device"`
	OemStrings struct {
		Text  string `xml:",chardata"`
		Entry string `xml:"entry"`
	} `xml:"oemStrings"`
}

Generated from https://www.onlinetool.io/xmltogo/

type Libvirt

type Libvirt struct {
	// contains filtered or unexported fields
}

func Init

func Init(ip net.IP, port int) *Libvirt

Initializes a Libvirt object for later connections

func (Libvirt) Close

func (l Libvirt) Close() error

func (Libvirt) Connect

func (l Libvirt) Connect() error

func (Libvirt) DestroyVM

func (l Libvirt) DestroyVM(dom Dom) error

func (Libvirt) GetHVBrs

func (l Libvirt) GetHVBrs() (hvnics []HVNicSpecs, err error)

func (Libvirt) GetHVLibvirtVersion

func (l Libvirt) GetHVLibvirtVersion() (string, error)

func (Libvirt) GetHVQemuVersion

func (l Libvirt) GetHVQemuVersion() (string, error)

func (Libvirt) GetHVSpecs

func (l Libvirt) GetHVSpecs() (specs HVSpecs, err error)

func (Libvirt) GetHVStats

func (l Libvirt) GetHVStats() (arch string, memoryTotal uint64, memoryFree uint64, cpus int32, mhz int32, nodes int32, sockets int32, cores int32, threads int32, err error)

func (Libvirt) GetUndefinedVMs

func (l Libvirt) GetUndefinedVMs() (vms map[uuid.UUID]Dom, err error)

Fetch list of all undefined domains

func (Libvirt) GetVMConsole

func (l Libvirt) GetVMConsole(dom Dom) (port string, err error)

func (Libvirt) GetVMFromUUID

func (l Libvirt) GetVMFromUUID(vmID uuid.UUID) (dom Dom, err error)

Fetches a domain from a UUID

func (Libvirt) GetVMSpecs

func (l Libvirt) GetVMSpecs(dom Dom) (specs DomSpecs, err error)

Fetch VM specs from libvirt, will be used to check consistency

func (Libvirt) GetVMState

func (l Libvirt) GetVMState(dom Dom) (stateInt status.Status, stateStr string, reasonStr string, err error)

Get the state of a domain(vm)

func (Libvirt) GetVMs

func (l Libvirt) GetVMs() (vms map[uuid.UUID]Dom, err error)

Fetches list of all defined domains Won't be used to populate the HV's VM list, instead to check for inconsistencies

func (Libvirt) IsConnected

func (l Libvirt) IsConnected() bool

func (Libvirt) UndefineVM

func (l Libvirt) UndefineVM(dom Dom) error

func (Libvirt) VMPowerOff

func (l Libvirt) VMPowerOff(dom Dom) error

func (Libvirt) VMReboot

func (l Libvirt) VMReboot(dom Dom) error

func (Libvirt) VMReset

func (l Libvirt) VMReset(dom Dom) error

func (Libvirt) VMStart

func (l Libvirt) VMStart(dom Dom) (err error)

func (Libvirt) VMStop

func (l Libvirt) VMStop(dom Dom) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL