pve

package
v0.0.0-...-c431ec1 Latest Latest
Warning

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

Go to latest
Published: Sep 26, 2024 License: MIT Imports: 26 Imported by: 0

Documentation

Index

Constants

View Source
const (
	StatusVirtualMachineRunning = "running"
	StatusVirtualMachineStopped = "stopped"
	StatusVirtualMachinePaused  = "paused"
)
View Source
const (
	DefaultUserAgent = "hilaoyu-go-pve-client"
)
View Source
const (
	TaskRunning = "running"
)

Variables

View Source
var (
	ErrNotAuthorized = errors.New("not authorized to access endpoint")
	ErrTimeout       = errors.New("the operation has timed out")
)
View Source
var DefaultWaitInterval = 1 * time.Second

Functions

func IsNotAuthorized

func IsNotAuthorized(err error) bool

func IsTimeout

func IsTimeout(err error) bool

func VNCAuthPasswordEncrypt

func VNCAuthPasswordEncrypt(key string, bytes []byte) ([]byte, error)

Types

type AgentExecCommand

type AgentExecCommand struct {
	Command string
	Args    []string
}

type AgentExecResult

type AgentExecResult struct {
	Pid int64 `json:"pid,omitempty"`
}

type AgentExecStatusResult

type AgentExecStatusResult struct {
	Exited   int    `json:"exited,omitempty"`
	OutData  string `json:"out-data,omitempty"`
	ErrData  string `json:"err-data,omitempty"`
	Exitcode int    `json:"exitcode,omitempty"`
}

type AgentFileReadResult

type AgentFileReadResult struct {
	Content   string         `json:"content,omitempty"`
	BytesRead StringOrUint64 `json:"bytes-read,omitempty"`
}

type AgentNetworkIface

type AgentNetworkIface struct {
	Name            string                   `json:"name"`
	HardwareAddress string                   `json:"hardware-address"`
	IpAddresses     []*AgentNetworkIpAddress `json:"ip-addresses"`
}

type AgentNetworkIpAddress

type AgentNetworkIpAddress struct {
	IpAddressType string `json:"ip-address-type"` //ipv4 ipv6
	IpAddress     string `json:"ip-address"`
	Prefix        int    `json:"prefix"`
	MacAddress    string `json:"mac-address"`
}

type AgentOsInfo

type AgentOsInfo struct {
	Version       string `json:"version"`
	VersionId     string `json:"version-id"`
	Id            string `json:"id"`
	Machine       string `json:"machine"`
	PrettyName    string `json:"pretty-name"`
	Name          string `json:"name"`
	KernelRelease string `json:"kernel-release"`
	KernelVersion string `json:"kernel-version"`
}

type Appliance

type Appliance struct {
	Node         string `json:",omitempty"`
	Os           string
	Source       string
	Type         string
	SHA512Sum    string
	Package      string
	Template     string
	Architecture string
	InfoPage     string
	Description  string
	ManageURL    string
	Version      string
	Section      string
	Headline     string
	// contains filtered or unexported fields
}

type Appliances

type Appliances []*Appliance

type Backup

type Backup struct{ Content }

func (*Backup) Delete

func (b *Backup) Delete() (*Task, error)

type Backups

type Backups []*Backup

type CPUInfo

type CPUInfo struct {
	UserHz  int `json:"user_hz"`
	MHZ     string
	Mode    string
	Cores   int
	Sockets int
	Flags   string
	CPUs    int
	HVM     string
}

type Client

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

func NewClient

func NewClient(baseURL string, opts ...Option) *Client

func (*Client) APIToken

func (c *Client) APIToken(tokenID, secret string)

func (*Client) Cluster

func (c *Client) Cluster() (*Cluster, error)

func (*Client) Delete

func (c *Client) Delete(p string, v interface{}) error

func (*Client) Get

func (c *Client) Get(p string, v interface{}) error

func (*Client) Login

func (c *Client) Login(username, password string) error

func (*Client) Node

func (c *Client) Node(name string) (*Node, error)

func (*Client) Nodes

func (c *Client) Nodes() (ns NodeStatuses, err error)

func (*Client) Post

func (c *Client) Post(p string, d interface{}, v interface{}) error

func (*Client) Put

func (c *Client) Put(p string, d interface{}, v interface{}) error

func (*Client) Req

func (c *Client) Req(method, path string, data []byte, v interface{}) error

func (*Client) TermProxyWebsocketServeHTTP

func (c *Client) TermProxyWebsocketServeHTTP(path string, vnc *VNC, w http.ResponseWriter, r *http.Request, responseHeader http.Header) (err error)

func (*Client) Ticket

func (c *Client) Ticket(credentials *Credentials) (*Session, error)

func (*Client) Upload

func (c *Client) Upload(path string, fields map[string]string, file *os.File, v interface{}) error

func (*Client) VNCProxyWebsocketServeHTTP

func (c *Client) VNCProxyWebsocketServeHTTP(path string, vnc *VNC, w http.ResponseWriter, r *http.Request, responseHeader http.Header) (err error)

func (*Client) VNCWebSocket

func (c *Client) VNCWebSocket(path string, vnc *VNC) (chan string, chan string, chan error, func() error, error)

func (*Client) Version

func (c *Client) Version() (*Version, error)

type Cluster

type Cluster struct {
	Version int
	Quorate int
	Nodes   NodeStatuses
	Name    string
	ID      string
	// contains filtered or unexported fields
}

func (*Cluster) FWGroup

func (cl *Cluster) FWGroup(name string) (group *FirewallSecurityGroup, err error)

func (*Cluster) FWGroups

func (cl *Cluster) FWGroups() (groups []*FirewallSecurityGroup, err error)

func (*Cluster) NewFWGroup

func (cl *Cluster) NewFWGroup(group *FirewallSecurityGroup) (err error)

func (*Cluster) NextID

func (cl *Cluster) NextID() (int, error)

func (*Cluster) Resources

func (cl *Cluster) Resources(filters ...string) (rs ClusterResources, err error)

func (*Cluster) SdnApply

func (cl *Cluster) SdnApply() (err error)

func (*Cluster) SdnVNetAdd

func (cl *Cluster) SdnVNetAdd(vNet *SdnVNet) (err error)

func (*Cluster) SdnVNetDelete

func (cl *Cluster) SdnVNetDelete(vNet *SdnVNet) (err error)

func (*Cluster) SdnVNetGet

func (cl *Cluster) SdnVNetGet(vNet *SdnVNet) (err error)

func (*Cluster) SdnVNetUpdate

func (cl *Cluster) SdnVNetUpdate(vNet *SdnVNet) (err error)

func (*Cluster) SdnVNetsGet

func (cl *Cluster) SdnVNetsGet() (vNets []*SdnVNet, err error)

func (*Cluster) SdnZonesGet

func (cl *Cluster) SdnZonesGet() (zones []*SdnZone, err error)

func (*Cluster) UnmarshalJSON

func (cl *Cluster) UnmarshalJSON(b []byte) error

type ClusterResource

type ClusterResource struct {
	ID         string  `jsont:"id"`
	Type       string  `json:"type"`
	Content    string  `json:",omitempty"`
	CPU        float64 `json:",omitempty"`
	Disk       uint64  `json:",omitempty"` // documented as string but this is an int
	HAstate    string  `json:",omitempty"`
	Level      string  `json:",omitempty"`
	MaxCPU     uint64  `json:",omitempty"`
	MaxDisk    uint64  `json:",omitempty"`
	MaxMem     uint64  `json:",omitempty"`
	Mem        uint64  `json:",omitempty"` // documented as string but this is an int
	Name       string  `json:",omitempty"`
	Node       string  `json:",omitempty"`
	PluginType string  `json:",omitempty"`
	Pool       string  `json:",omitempty"`
	Status     string  `json:",omitempty"`
	Storage    string  `json:",omitempty"`
	Uptime     uint64  `json:",omitempty"`
}

type ClusterResources

type ClusterResources []*ClusterResource

type Content

type Content struct {
	URL     string
	Node    string
	Storage string `json:",omitempty"`
	Content string `json:",omitempty"`
	VolID   string `json:",omitempty"`
	CTime   uint64 `json:",omitempty"`
	Format  string
	Size    StringOrUint64
	Used    StringOrUint64 `json:",omitempty"`
	Path    string         `json:",omitempty"`
	Notes   string         `json:",omitempty"`
	// contains filtered or unexported fields
}

type Credentials

type Credentials struct {
	Username string `json:"username"`
	Password string `json:"password"`
	Otp      string `json:"otp,omitempty"`
	Path     string `json:"path,omitempty"`
	Privs    string `json:"privs,omitempty"`
	Realm    string `json:"realm,omitempty"`
}

type FirewallNodeOption

type FirewallNodeOption struct {
	Enable                           bool   `json:"enable,omitempty"`
	LogLevelIn                       string `json:"log_level_in,omitempty"`
	LogLevelOut                      string `json:"log_level_out,omitempty"`
	LogNfConntrack                   bool   `json:"log_nf_conntrack,omitempty"`
	Ntp                              bool   `json:"ntp,omitempty"`
	NfConntrackAllowInvalid          bool   `json:"nf_conntrack_allow_invalid,omitempty"`
	NfConntrackMax                   int    `json:"nf_conntrack_max,omitempty"`
	NfConntrackTcpTimeoutEstablished int    `json:"nf_conntrack_tcp_timeout_established,omitempty"`
	NfConntrackTcpTimeoutSynRecv     int    `json:"nf_conntrack_tcp_timeout_syn_recv,omitempty"`
	Nosmurfs                         bool   `json:"nosmurfs,omitempty"`
	ProtectionSynflood               bool   `json:"protection_synflood,omitempty"`
	ProtectionSynfloodBurst          int    `json:"protection_synflood_burst,omitempty"`
	ProtectionSynfloodRate           int    `json:"protection_synflood_rate,omitempty"`
	SmurfLogLevel                    string `json:"smurf_log_level,omitempty"`
	TcpFlagsLogLevel                 string `json:"tcp_flags_log_level,omitempty"`
	Tcpflags                         bool   `json:"tcpflags,omitempty"`
}

type FirewallRule

type FirewallRule struct {
	Type     string `json:"type,omitempty"`
	Action   string `json:"action,omitempty"`
	Pos      int    `json:"pos,omitempty"`
	Comment  string `json:"comment,omitempty"`
	Dest     string `json:"dest,omitempty"`
	Dport    string `json:"dport,omitempty"`
	Enable   int    `json:"enable,omitempty"`
	IcmpType string `json:"icmp_type,omitempty"`
	Iface    string `json:"iface,omitempty"`
	Log      string `json:"log,omitempty"`
	Macro    string `json:"macro,omitempty"`
	Proto    string `json:"proto,omitempty"`
	Source   string `json:"source,omitempty"`
	Sport    string `json:"sport,omitempty"`
}

func (*FirewallRule) IsEnable

func (r *FirewallRule) IsEnable() bool

type FirewallSecurityGroup

type FirewallSecurityGroup struct {
	Group   string          `json:"group,omitempty"`
	Comment string          `json:"comment,omitempty"`
	Rules   []*FirewallRule `json:"rules,omitempty"`
	// contains filtered or unexported fields
}

func (*FirewallSecurityGroup) Delete

func (g *FirewallSecurityGroup) Delete() (err error)

func (*FirewallSecurityGroup) GetRules

func (g *FirewallSecurityGroup) GetRules() (rules []*FirewallRule, err error)

func (*FirewallSecurityGroup) RuleCreate

func (g *FirewallSecurityGroup) RuleCreate(rule *FirewallRule) (err error)

func (*FirewallSecurityGroup) RuleDelete

func (g *FirewallSecurityGroup) RuleDelete(rulePos int) (err error)

func (*FirewallSecurityGroup) RuleUpdate

func (g *FirewallSecurityGroup) RuleUpdate(rule *FirewallRule) (err error)

type FirewallVirtualMachineOption

type FirewallVirtualMachineOption struct {
	Enable      bool   `json:"enable,omitempty"`
	Dhcp        bool   `json:"dhcp,omitempty"`
	Ipfilter    bool   `json:"ipfilter,omitempty"`
	LogLevelIn  string `json:"log_level_in,omitempty"`
	LogLevelOut string `json:"log_level_out,omitempty"`
	Macfilter   bool   `json:"macfilter,omitempty"`
	Ndp         bool   `json:"ndp,omitempty"`
	PolicyIn    string `json:"policy_in,omitempty"`
	PolicyOut   string `json:"policy_out,omitempty"`
	Radv        bool   `json:"radv,omitempty"`
}

type HA

type HA struct {
	Managed int
}

type ISO

type ISO struct{ Content }

func (*ISO) Delete

func (i *ISO) Delete() (*Task, error)

type ISOs

type ISOs []*ISO

type IsTemplate

type IsTemplate bool

func (*IsTemplate) UnmarshalJSON

func (it *IsTemplate) UnmarshalJSON(b []byte) error

type Ksm

type Ksm struct {
	Shared int64
}

type LxcContainer

type LxcContainer struct {
	Name string
	Node string

	CPUs    int
	Status  string
	VMID    StringOrUint64
	Uptime  uint64
	MaxMem  uint64
	MaxDisk uint64
	MaxSwap uint64
	// contains filtered or unexported fields
}

func (*LxcContainer) Reboot

func (c *LxcContainer) Reboot() (status *LxcContainerStatus, err error)

func (*LxcContainer) Resume

func (c *LxcContainer) Resume() (status *LxcContainerStatus, err error)

func (*LxcContainer) Start

func (c *LxcContainer) Start() (status string, err error)

func (*LxcContainer) Stop

func (c *LxcContainer) Stop() (status *LxcContainerStatus, err error)

func (*LxcContainer) Suspend

func (c *LxcContainer) Suspend() (status *LxcContainerStatus, err error)

func (*LxcContainer) TermProxy

func (c *LxcContainer) TermProxy() (vnc *VNC, err error)

func (*LxcContainer) VNCWebSocket

func (c *LxcContainer) VNCWebSocket(vnc *VNC) (chan string, chan string, chan error, func() error, error)

type LxcContainerStatus

type LxcContainerStatus struct {
	Data string `json:",omitempty"`
}

type LxcContainerStatuses

type LxcContainerStatuses []*LxcContainerStatus

type LxcContainers

type LxcContainers []*LxcContainer

type Memory

type Memory struct {
	Used  uint64
	Free  uint64
	Total uint64
}

type Node

type Node struct {
	Name string

	Kversion   string
	LoadAvg    []string
	CPU        float64
	RootFS     RootFS
	PVEVersion string
	CPUInfo    CPUInfo
	Swap       Memory
	Idle       int
	Memory     Memory
	Ksm        Ksm
	Uptime     uint64
	Wait       float64
	// contains filtered or unexported fields
}

func (*Node) Appliances

func (n *Node) Appliances() (appliances Appliances, err error)

func (*Node) DownloadAppliance

func (n *Node) DownloadAppliance(template, storage string) (ret string, err error)

func (*Node) FirewallGetRules

func (n *Node) FirewallGetRules() (rules []*FirewallRule, err error)

func (*Node) FirewallOptionGet

func (n *Node) FirewallOptionGet() (firewallOption *FirewallNodeOption, err error)

func (*Node) FirewallOptionSet

func (n *Node) FirewallOptionSet(firewallOption *FirewallNodeOption) (err error)

func (*Node) FirewallRulesCreate

func (n *Node) FirewallRulesCreate(rule *FirewallRule) (err error)

func (*Node) FirewallRulesDelete

func (n *Node) FirewallRulesDelete(rulePos int) (err error)

func (*Node) FirewallRulesUpdate

func (n *Node) FirewallRulesUpdate(rule *FirewallRule) (err error)

func (*Node) LxcContainer

func (n *Node) LxcContainer(id int) (*LxcContainer, error)

func (*Node) LxcContainers

func (n *Node) LxcContainers() (c LxcContainers, err error)

func (*Node) Network

func (n *Node) Network(iface string) (network *NodeNetwork, err error)

func (*Node) NetworkReload

func (n *Node) NetworkReload() (*Task, error)

func (*Node) Networks

func (n *Node) Networks() (networks NodeNetworks, err error)

func (*Node) NewNetwork

func (n *Node) NewNetwork(network *NodeNetwork) (task *Task, err error)

func (*Node) NewVirtualMachine

func (n *Node) NewVirtualMachine(id int, options ...VirtualMachineOption) (*Task, error)

func (*Node) Storage

func (n *Node) Storage(name string) (storage *Storage, err error)

func (*Node) Storages

func (n *Node) Storages() (storages Storages, err error)

func (*Node) TermProxy

func (n *Node) TermProxy() (vnc *VNC, err error)

func (*Node) VNCWebSocket

func (n *Node) VNCWebSocket(vnc *VNC) (chan string, chan string, chan error, func() error, error)

VNCWebSocket send, recv, errors, closer, error

func (*Node) Version

func (n *Node) Version() (version *Version, err error)

func (*Node) VirtualMachine

func (n *Node) VirtualMachine(id int) (*VirtualMachine, error)

func (*Node) VirtualMachines

func (n *Node) VirtualMachines() (vms VirtualMachines, err error)

func (*Node) VzTmpl

func (n *Node) VzTmpl(template, storage string) (*VzTmpl, error)

func (*Node) VzTmpls

func (n *Node) VzTmpls(storage string) (templates VzTmpls, err error)

type NodeNetwork

type NodeNetwork struct {
	Node    string `json:"-"`
	NodeApi *Node  `json:"-"`

	Iface    string `json:"iface,omitempty"`
	BondMode string `json:"bond_mode,omitempty"`

	Autostart int `json:"autostart,omitempty"`

	CIDR            string `json:"cidr,omitempty"`
	CIDR6           string `json:"cidr6,omitempty"`
	Gateway         string `json:"gateway,omitempty"`
	Gateway6        string `json:"gateway6,omitempty"`
	Netmask         string `json:"netmask,omitempty"`
	Netmask6        string `json:"netmask6,omitempty"`
	BridgeVlanAware bool   `json:"bridge_vlan_aware,omitempty"`
	BridgePorts     string `json:"bridge_ports,omitempty"`
	Comments        string `json:"comments,omitempty"`
	Comments6       string `json:"comments6,omitempty"`
	BridgeStp       string `json:"bridge_stp,omitempty"`
	BridgeFd        string `json:"bridge_fd,omitempty"`
	BondPrimary     string `json:"bond-primary,omitempty"`

	Address  string `json:"address,omitempty"`
	Address6 string `json:"address6,omitempty"`
	Type     string `json:"type,omitempty"`
	Active   int    `json:"active,omitempty"`
	Method   string `json:"method,omitempty"`
	Method6  string `json:"method6,omitempty"`
	Priority int    `json:"priority,omitempty"`
	// contains filtered or unexported fields
}

func (*NodeNetwork) Delete

func (nw *NodeNetwork) Delete() (task *Task, err error)

func (*NodeNetwork) Update

func (nw *NodeNetwork) Update() (task *Task, err error)

type NodeNetworks

type NodeNetworks []*NodeNetwork

type NodeStatus

type NodeStatus struct {
	// shared
	Status string `json:",omitempty"`
	Level  string `json:",omitempty"`
	ID     string `json:",omitempty"` // format "node/<name>"

	// from /nodes endpoint
	Node           string  `json:",omitempty"`
	MaxCPU         int     `json:",omitempty"`
	MaxMem         uint64  `json:",omitempty"`
	Disk           uint64  `json:",omitempty"`
	SSLFingerprint string  `json:"ssl_fingerprint,omitempty"`
	MaxDisk        uint64  `json:",omitempty"`
	Mem            uint64  `json:",omitempty"`
	CPU            float64 `json:",omitempty"`

	// from /cluster endpoint
	NodeID int    `json:",omitempty"` // the internal id of the node
	Name   string `json:",omitempty"`
	IP     string `json:",omitempty"`
	Online int    `json:",omitempty"`
	Local  int    `json:",omitempty"`
}

type NodeStatuses

type NodeStatuses []*NodeStatus

type Option

type Option func(*Client)

func WithAuthAccount

func WithAuthAccount(username, password string) Option

func WithAuthApiToken

func WithAuthApiToken(tokenID, secret string) Option

func WithHttpClient

func WithHttpClient(client *http.Client) Option

func WithLogger

func WithLogger(logger *utilLogger.Logger) Option

func WithUserAgent

func WithUserAgent(ua string) Option

type RootFS

type RootFS struct {
	Avail uint64
	Total uint64
	Free  uint64
	Used  uint64
}

type SdnVNet

type SdnVNet struct {
	Tag       int    `json:"tag,omitempty"`
	Zone      string `json:"zone,omitempty"`
	Type      string `json:"type,omitempty"`
	Vnet      string `json:"vnet,omitempty"`
	Alias     string `json:"alias,omitempty"`
	Vlanaware int    `json:"vlanaware,omitempty"`
	// contains filtered or unexported fields
}

type SdnZone

type SdnZone struct {
	Zone      string `json:"zone,omitempty"`
	Type      string `json:"type,omitempty"`
	Mtu       int    `json:"mtu,omitempty"`
	Ipam      string `json:"ipam,omitempty"`
	Bridge    string `json:"bridge,omitempty"`
	VXLanPort string `json:"vxlan-port,omitempty"`
	// contains filtered or unexported fields
}

type Session

type Session struct {
	Username            string `json:"username"`
	CsrfPreventionToken string `json:"CSRFPreventionToken,omitempty"`
	ClusterName         string `json:"clustername,omitempty"`
	Ticket              string `json:"ticket,omitempty"`
}

type Snapshot

type Snapshot struct {
	Name        string
	Vmstate     int
	Description string
	Snaptime    int64
	Parent      string
	Snapstate   string
}

type Storage

type Storage struct {
	Node         string
	Name         string `json:"storage"`
	Enabled      int
	UsedFraction float64 `json:"used_fraction"`
	Active       int
	Content      string
	Shared       int
	Avail        uint64
	Type         string
	Used         uint64
	Total        uint64
	Storage      string
	// contains filtered or unexported fields
}

func (*Storage) Backup

func (s *Storage) Backup(name string) (backup *Backup, err error)

func (*Storage) DeleteContent

func (s *Storage) DeleteContent(v, p, t string) (*Task, error)

func (*Storage) DownloadURL

func (s *Storage) DownloadURL(content, filename, url string) (*Task, error)

func (*Storage) ISO

func (s *Storage) ISO(name string) (iso *ISO, err error)

func (*Storage) Upload

func (s *Storage) Upload(content, file string) (*Task, error)

func (*Storage) VzTmpl

func (s *Storage) VzTmpl(name string) (vztmpl *VzTmpl, err error)

type Storages

type Storages []*Storage

type StringOrUint64

type StringOrUint64 uint64

func (*StringOrUint64) UnmarshalJSON

func (d *StringOrUint64) UnmarshalJSON(b []byte) error

type Task

type Task struct {
	UPID         string
	ID           string
	Type         string
	User         string
	Status       string
	Node         string
	PID          uint64 `json:",omitempty"`
	PStart       uint64 `json:",omitempty"`
	Saved        string `json:",omitempty"`
	ExitStatus   string `json:",omitempty"`
	IsCompleted  bool
	IsRunning    bool
	IsFailed     bool
	IsSuccessful bool
	StartTime    time.Time     `json:"-"`
	EndTime      time.Time     `json:"-"`
	Duration     time.Duration `json:"-"`
	// contains filtered or unexported fields
}

func NewTask

func NewTask(upid string, client *Client) *Task

func (*Task) Log

func (t *Task) Log(start, limit int) (l TaskLog, err error)

func (*Task) LogTail

func (t *Task) LogTail(start int, watch chan string) error

func (*Task) Ping

func (t *Task) Ping() error

func (*Task) Stop

func (t *Task) Stop() error

func (*Task) UnmarshalJSON

func (t *Task) UnmarshalJSON(b []byte) error

func (*Task) Wait

func (t *Task) Wait(interval, max time.Duration) error

func (*Task) WaitFor

func (t *Task) WaitFor(seconds int) error

func (*Task) WaitForComplete

func (t *Task) WaitForComplete(timesNum int, stepSeconds ...int) (err error)

func (*Task) WaitForCompleteStatus

func (t *Task) WaitForCompleteStatus(timesNum int, stepSeconds ...int) (status bool, completed bool, err error)

func (*Task) Watch

func (t *Task) Watch(start int) (chan string, error)

type TaskLog

type TaskLog map[int]string

func (*TaskLog) UnmarshalJSON

func (l *TaskLog) UnmarshalJSON(b []byte) error

line numbers in the response start a 1 but the start param indexes from 0 so converting to that

type Tasks

type Tasks []*Tasks

type VNC

type VNC struct {
	Cert     string
	Port     StringOrUint64
	Ticket   string
	UPID     string
	User     string
	Password string
}

type Version

type Version struct {
	Release string `json:"release"`
	RepoID  string `json:"repoid"`
	Version string `json:"version"`
}

type VirtualMachine

type VirtualMachine struct {
	VirtualMachineConfig *VirtualMachineConfig

	Name      string
	Node      string
	NetIn     uint64
	CPUs      int
	DiskWrite uint64
	Status    string
	Lock      string `json:",omitempty"`
	VMID      StringOrUint64
	PID       StringOrUint64
	Netout    uint64
	Disk      uint64
	Uptime    uint64
	Mem       uint64
	CPU       float64
	MaxMem    uint64
	MaxDisk   uint64
	DiskRead  uint64
	QMPStatus string     `json:"qmpstatus,omitempty"`
	Template  IsTemplate // empty str if a vm, int 1 if a template
	HA        HA         `json:",omitempty"`
	// contains filtered or unexported fields
}

func (*VirtualMachine) AgentExec

func (v *VirtualMachine) AgentExec(command *AgentExecCommand) (pid int64, err error)

func (*VirtualMachine) AgentExecStatus

func (v *VirtualMachine) AgentExecStatus(pid int64) (result *AgentExecStatusResult, err error)

func (*VirtualMachine) AgentExecSync

func (v *VirtualMachine) AgentExecSync(command *AgentExecCommand, timeoutSeconds int) (output string, err error)

func (*VirtualMachine) AgentFileRead

func (v *VirtualMachine) AgentFileRead(file string) (content string, err error)

func (*VirtualMachine) AgentFileWrite

func (v *VirtualMachine) AgentFileWrite(file string, content string) (err error)

func (*VirtualMachine) AgentGetNetworkIFaces

func (v *VirtualMachine) AgentGetNetworkIFaces() (iFaces []*AgentNetworkIface, err error)

func (*VirtualMachine) AgentOsInfo

func (v *VirtualMachine) AgentOsInfo() (info *AgentOsInfo, err error)

func (*VirtualMachine) AgentSetUserPassword

func (v *VirtualMachine) AgentSetUserPassword(password string, username string) (err error)

func (*VirtualMachine) ChangeDisk

func (v *VirtualMachine) ChangeDisk(diskName string, disk *VirtualMachineDisk, storage string) (err error)

func (*VirtualMachine) Clone

func (v *VirtualMachine) Clone(name, target string) (newid int, task *Task, err error)

func (*VirtualMachine) Config

func (v *VirtualMachine) Config(options ...VirtualMachineOption) (*Task, error)

func (*VirtualMachine) ConfigLoad

func (v *VirtualMachine) ConfigLoad(force ...bool) (err error)

func (*VirtualMachine) Delete

func (v *VirtualMachine) Delete() (task *Task, err error)

func (*VirtualMachine) FirewallGetRules

func (v *VirtualMachine) FirewallGetRules() (rules []*FirewallRule, err error)

func (*VirtualMachine) FirewallOptionGet

func (v *VirtualMachine) FirewallOptionGet() (firewallOption *FirewallVirtualMachineOption, err error)

func (*VirtualMachine) FirewallOptionSet

func (v *VirtualMachine) FirewallOptionSet(firewallOption *FirewallVirtualMachineOption) (err error)

func (*VirtualMachine) FirewallRulesCreate

func (v *VirtualMachine) FirewallRulesCreate(rule *FirewallRule) (err error)

func (*VirtualMachine) FirewallRulesDelete

func (v *VirtualMachine) FirewallRulesDelete(rulePos int) (err error)

func (*VirtualMachine) FirewallRulesUpdate

func (v *VirtualMachine) FirewallRulesUpdate(rule *FirewallRule) (err error)

func (*VirtualMachine) GetDisk

func (v *VirtualMachine) GetDisk(diskName string) (disk *VirtualMachineDisk, err error)

func (*VirtualMachine) Hibernate

func (v *VirtualMachine) Hibernate() (task *Task, err error)

func (*VirtualMachine) IsHibernated

func (v *VirtualMachine) IsHibernated() bool

func (*VirtualMachine) IsPaused

func (v *VirtualMachine) IsPaused() bool

func (*VirtualMachine) IsRunning

func (v *VirtualMachine) IsRunning() bool

func (*VirtualMachine) IsStopped

func (v *VirtualMachine) IsStopped() bool

func (*VirtualMachine) MoveDisk

func (v *VirtualMachine) MoveDisk(diskName, storage string, format ...string) (task *Task, err error)

func (*VirtualMachine) NewSnapshot

func (v *VirtualMachine) NewSnapshot(name string) (task *Task, err error)

func (*VirtualMachine) Pause

func (v *VirtualMachine) Pause() (task *Task, err error)

func (*VirtualMachine) Ping

func (v *VirtualMachine) Ping() error

func (*VirtualMachine) Reboot

func (v *VirtualMachine) Reboot() (task *Task, err error)

func (*VirtualMachine) Reset

func (v *VirtualMachine) Reset() (task *Task, err error)

func (*VirtualMachine) Resize

func (v *VirtualMachine) Resize(diskName string, sizeGb int64) (task *Task, err error)

func (*VirtualMachine) Resume

func (v *VirtualMachine) Resume() (task *Task, err error)

func (*VirtualMachine) Shutdown

func (v *VirtualMachine) Shutdown() (task *Task, err error)

func (*VirtualMachine) SnapshotDelete

func (v *VirtualMachine) SnapshotDelete(name string) (task *Task, err error)

func (*VirtualMachine) SnapshotRollback

func (v *VirtualMachine) SnapshotRollback(name string) (task *Task, err error)

func (*VirtualMachine) Snapshots

func (v *VirtualMachine) Snapshots() (snapshots []*Snapshot, err error)

func (*VirtualMachine) Start

func (v *VirtualMachine) Start() (*Task, error)

func (*VirtualMachine) Stop

func (v *VirtualMachine) Stop() (task *Task, err error)

func (*VirtualMachine) TermProxy

func (v *VirtualMachine) TermProxy() (vnc *VNC, err error)

func (*VirtualMachine) TermProxyWebsocketServeHTTP

func (v *VirtualMachine) TermProxyWebsocketServeHTTP(w http.ResponseWriter, r *http.Request, responseHeader http.Header) (err error)

func (*VirtualMachine) VNCProxyWebsocketServeHTTP

func (v *VirtualMachine) VNCProxyWebsocketServeHTTP(w http.ResponseWriter, r *http.Request, responseHeader http.Header) (err error)

func (*VirtualMachine) VNCWebSocket

func (v *VirtualMachine) VNCWebSocket(vnc *VNC) (chan string, chan string, chan error, func() error, error)

VNCWebSocket copy/paste when calling to get the channel names right send, recv, errors, closer, errors := vm.VNCWebSocket(vnc) for this to work you need to first setup a serial terminal on your vm https://pve.proxmox.com/wiki/Serial_Terminal

func (*VirtualMachine) VncProxy

func (v *VirtualMachine) VncProxy() (vnc *VNC, err error)

type VirtualMachineConfig

type VirtualMachineConfig struct {
	Cores   int
	Numa    int
	Memory  StringOrUint64
	Sockets int
	OSType  string
	SMBios1 string
	SCSIHW  string

	Digest  string
	Meta    string
	Boot    string
	VMGenID string
	Name    string

	IDEs map[string]*VirtualMachineDisk
	IDE0 *VirtualMachineDisk
	IDE1 *VirtualMachineDisk
	IDE2 *VirtualMachineDisk
	IDE3 *VirtualMachineDisk
	IDE4 *VirtualMachineDisk
	IDE5 *VirtualMachineDisk
	IDE6 *VirtualMachineDisk
	IDE7 *VirtualMachineDisk
	IDE8 *VirtualMachineDisk
	IDE9 *VirtualMachineDisk

	SCSIs map[string]*VirtualMachineDisk
	SCSI0 *VirtualMachineDisk
	SCSI1 *VirtualMachineDisk
	SCSI2 *VirtualMachineDisk
	SCSI3 *VirtualMachineDisk
	SCSI4 *VirtualMachineDisk
	SCSI5 *VirtualMachineDisk
	SCSI6 *VirtualMachineDisk
	SCSI7 *VirtualMachineDisk
	SCSI8 *VirtualMachineDisk
	SCSI9 *VirtualMachineDisk

	SATAs map[string]*VirtualMachineDisk
	SATA0 *VirtualMachineDisk
	SATA1 *VirtualMachineDisk
	SATA2 *VirtualMachineDisk
	SATA3 *VirtualMachineDisk
	SATA4 *VirtualMachineDisk
	SATA5 *VirtualMachineDisk
	SATA6 *VirtualMachineDisk
	SATA7 *VirtualMachineDisk
	SATA8 *VirtualMachineDisk
	SATA9 *VirtualMachineDisk

	Nets map[string]*VirtualMachineNetwork
	Net0 *VirtualMachineNetwork
	Net1 *VirtualMachineNetwork
	Net2 *VirtualMachineNetwork
	Net3 *VirtualMachineNetwork
	Net4 *VirtualMachineNetwork
	Net5 *VirtualMachineNetwork
	Net6 *VirtualMachineNetwork
	Net7 *VirtualMachineNetwork
	Net8 *VirtualMachineNetwork
	Net9 *VirtualMachineNetwork

	Unuseds map[string]*VirtualMachineDisk
	Unused0 *VirtualMachineDisk
	Unused1 *VirtualMachineDisk
	Unused2 *VirtualMachineDisk
	Unused3 *VirtualMachineDisk
	Unused4 *VirtualMachineDisk
	Unused5 *VirtualMachineDisk
	Unused6 *VirtualMachineDisk
	Unused7 *VirtualMachineDisk
	Unused8 *VirtualMachineDisk
	Unused9 *VirtualMachineDisk
}

func (*VirtualMachineConfig) MergeIDEs

func (vmc *VirtualMachineConfig) MergeIDEs() map[string]*VirtualMachineDisk

func (*VirtualMachineConfig) MergeNets

func (vmc *VirtualMachineConfig) MergeNets() map[string]*VirtualMachineNetwork

func (*VirtualMachineConfig) MergeSATAs

func (vmc *VirtualMachineConfig) MergeSATAs() map[string]*VirtualMachineDisk

func (*VirtualMachineConfig) MergeSCSIs

func (vmc *VirtualMachineConfig) MergeSCSIs() map[string]*VirtualMachineDisk

func (*VirtualMachineConfig) MergeUnuseds

func (vmc *VirtualMachineConfig) MergeUnuseds() map[string]*VirtualMachineDisk

type VirtualMachineDisk

type VirtualMachineDisk struct {
	Name      string `json:"name,omitempty"`
	Storage   string `json:"storage,omitempty"`
	File      string `json:"file,omitempty"`
	Aio       string `json:"aio,omitempty"`
	Cache     string `json:"cache,omitempty"`
	Discard   string `json:"discard,omitempty"`
	IoThread  int    `json:"iothread,omitempty"`
	Replicate int    `json:"replicate,omitempty"`
	Ro        int    `json:"ro,omitempty"`
	Backup    int    `json:"backup,omitempty"`
	SizeGb    int64  `json:"size_gb,omitempty"`
	Ssd       int    `json:"ssd,omitempty"`
	Media     string `json:"media,omitempty"`
	Format    string `json:"format,omitempty"`
}

func (*VirtualMachineDisk) SourcePath

func (vmd *VirtualMachineDisk) SourcePath() string

func (*VirtualMachineDisk) ToConfigOptions

func (vmd *VirtualMachineDisk) ToConfigOptions() (options []string)

func (*VirtualMachineDisk) UnmarshalJSON

func (vmd *VirtualMachineDisk) UnmarshalJSON(b []byte) error

type VirtualMachineNetwork

type VirtualMachineNetwork struct {
	Name     string `json:"name,omitempty"`
	Type     string `json:"type,omitempty"`
	Mac      string `json:"mac,omitempty"`
	Bridge   string `json:"bridge,omitempty"`
	Firewall int    `json:"firewall,omitempty"`
	LinkDown int    `json:"link_down,omitempty"`
	Mtu      int    `json:"mtu,omitempty"`
	Queues   int    `json:"queues,omitempty"`
	Rate     int    `json:"rate,omitempty"`
	Tag      int    `json:"tag,omitempty"`
	Trunks   string `json:"trunks,omitempty"`
}

func (*VirtualMachineNetwork) UnmarshalJSON

func (vmn *VirtualMachineNetwork) UnmarshalJSON(b []byte) error

type VirtualMachineOption

type VirtualMachineOption struct {
	Name  string
	Value interface{}
}

type VirtualMachineOptions

type VirtualMachineOptions []*VirtualMachineOption

type VirtualMachines

type VirtualMachines []*VirtualMachine

type VzTmpl

type VzTmpl struct{ Content }

func (*VzTmpl) Delete

func (v *VzTmpl) Delete() (*Task, error)

type VzTmpls

type VzTmpls []*VzTmpl

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳