Documentation ¶
Index ¶
- Constants
- Variables
- func IsNotAuthorized(err error) bool
- func IsNotFound(err error) bool
- func IsTimeout(err error) bool
- func MakeTag(v string) string
- type AgentExecStatus
- type AgentNetworkIPAddress
- type AgentNetworkIface
- type AgentOsInfo
- type Appliance
- type Appliances
- type Backup
- type Backups
- type CPUInfo
- type Client
- func (c *Client) APIToken(tokenID, secret string)
- func (c *Client) Cluster() (*Cluster, error)
- func (c *Client) Delete(p string, v interface{}) error
- func (c *Client) Get(p string, v interface{}) error
- func (c *Client) Login(username, password string) error
- func (c *Client) Node(name string) (*Node, error)
- func (c *Client) Nodes() (ns NodeStatuses, err error)
- func (c *Client) Post(p string, d interface{}, v interface{}) error
- func (c *Client) Put(p string, d interface{}, v interface{}) error
- func (c *Client) Req(method, path string, data []byte, v interface{}) error
- func (c *Client) Ticket(credentials *Credentials) (*Session, error)
- func (c *Client) Upload(path string, fields map[string]string, file *os.File, v interface{}) error
- func (c *Client) VNCWebSocket(path string, vnc *VNC) (chan string, chan string, chan error, func() error, error)
- func (c *Client) Version() (*Version, error)
- type Cluster
- func (cl *Cluster) FWGroup(name string) (group *FirewallSecurityGroup, err error)
- func (cl *Cluster) FWGroups() (groups []*FirewallSecurityGroup, err error)
- func (cl *Cluster) NewFWGroup(group *FirewallSecurityGroup) error
- func (cl *Cluster) NextID() (int, error)
- func (cl *Cluster) Resources(filters ...string) (rs ClusterResources, err error)
- func (cl *Cluster) UnmarshalJSON(b []byte) error
- type ClusterResource
- type ClusterResources
- type Container
- func (c *Container) Reboot() (status *ContainerStatus, err error)
- func (c *Container) Resume() (status *ContainerStatus, err error)
- func (c *Container) Start() (status string, err error)
- func (c *Container) Stop() (status *ContainerStatus, err error)
- func (c *Container) Suspend() (status *ContainerStatus, err error)
- func (c *Container) TermProxy() (vnc *VNC, err error)
- func (c *Container) VNCWebSocket(vnc *VNC) (chan string, chan string, chan error, func() error, error)
- type ContainerStatus
- type ContainerStatuses
- type Containers
- type Content
- type Credentials
- type FirewallNodeOption
- type FirewallRule
- type FirewallSecurityGroup
- func (g *FirewallSecurityGroup) Delete() error
- func (g *FirewallSecurityGroup) GetRules() ([]*FirewallRule, error)
- func (g *FirewallSecurityGroup) RuleCreate(rule *FirewallRule) error
- func (g *FirewallSecurityGroup) RuleDelete(rulePos int) error
- func (g *FirewallSecurityGroup) RuleUpdate(rule *FirewallRule) error
- type FirewallVirtualMachineOption
- type HA
- type ISO
- type ISOs
- type IsTemplate
- type Ksm
- type LeveledLogger
- type LeveledLoggerInterface
- type Log
- type Memory
- type Node
- func (n *Node) Appliances() (appliances Appliances, err error)
- func (n *Node) Container(vmid int) (*Container, error)
- func (n *Node) Containers() (c Containers, err error)
- func (n *Node) DownloadAppliance(template, storage string) (ret string, err error)
- func (n *Node) FirewallGetRules() (rules []*FirewallRule, err error)
- func (n *Node) FirewallOptionGet() (firewallOption *FirewallNodeOption, err error)
- func (n *Node) FirewallOptionSet(firewallOption *FirewallNodeOption) error
- func (n *Node) FirewallRulesCreate(rule *FirewallRule) error
- func (n *Node) FirewallRulesDelete(rulePos int) error
- func (n *Node) FirewallRulesUpdate(rule *FirewallRule) error
- func (n *Node) Network(iface string) (network *NodeNetwork, err error)
- func (n *Node) NetworkReload() (*Task, error)
- func (n *Node) Networks() (networks NodeNetworks, err error)
- func (n *Node) NewNetwork(network *NodeNetwork) (task *Task, err error)
- func (n *Node) NewVirtualMachine(vmid int, options ...VirtualMachineOption) (*Task, error)
- func (n *Node) Storage(name string) (storage *Storage, err error)
- func (n *Node) StorageBackup() (*Storage, error)
- func (n *Node) StorageISO() (*Storage, error)
- func (n *Node) StorageImages() (*Storage, error)
- func (n *Node) StorageRootDir() (*Storage, error)
- func (n *Node) StorageVZTmpl() (*Storage, error)
- func (n *Node) Storages() (storages Storages, err error)
- func (n *Node) TermProxy() (vnc *VNC, err error)
- func (n *Node) VNCWebSocket(vnc *VNC) (chan string, chan string, chan error, func() error, error)
- func (n *Node) Version() (version *Version, err error)
- func (n *Node) VirtualMachine(vmid int) (*VirtualMachine, error)
- func (n *Node) VirtualMachines() (vms VirtualMachines, err error)
- func (n *Node) VzTmpl(template, storage string) (*VzTmpl, error)
- func (n *Node) VzTmpls(storage string) (templates VzTmpls, err error)
- type NodeNetwork
- type NodeNetworks
- type NodeStatus
- type NodeStatuses
- type Option
- type RootFS
- type Session
- type Snapshot
- type Storage
- func (s *Storage) Backup(name string) (backup *Backup, err error)
- func (s *Storage) DownloadURL(content, filename, url string) (*Task, error)
- func (s *Storage) ISO(name string) (iso *ISO, err error)
- func (s *Storage) Upload(content, file string) (*Task, error)
- func (s *Storage) VzTmpl(name string) (vztmpl *VzTmpl, err error)
- type Storages
- type StringOrInt
- type StringOrUint64
- type Task
- func (t *Task) Log(start, limit int) (l Log, err error)
- func (t *Task) Ping() error
- func (t *Task) Stop() error
- func (t *Task) UnmarshalJSON(b []byte) error
- func (t *Task) Wait(interval, max time.Duration) error
- func (t *Task) WaitFor(seconds int) error
- func (t *Task) WaitForCompleteStatus(timesNum int, steps ...int) (status bool, completed bool, err error)
- func (t *Task) Watch(start int) (chan string, error)
- type Tasks
- type Time
- type UPID
- type VNC
- type Version
- type VirtualMachine
- func (v *VirtualMachine) AddTag(value string) (*Task, error)
- func (v *VirtualMachine) AgentExec(command, inputData string) (pid int, err error)
- func (v *VirtualMachine) AgentExecStatus(pid int) (status *AgentExecStatus, err error)
- func (v *VirtualMachine) AgentGetNetworkIFaces() (iFaces []*AgentNetworkIface, err error)
- func (v *VirtualMachine) AgentOsInfo() (info *AgentOsInfo, err error)
- func (v *VirtualMachine) AgentSetUserPassword(password string, username string) error
- func (v *VirtualMachine) Clone(params *VirtualMachineCloneOptions) (newid int, task *Task, err error)
- func (v *VirtualMachine) CloudInit(device, userdata, metadata, vendordata, networkconfig string) error
- func (v *VirtualMachine) Config(options ...VirtualMachineOption) (*Task, error)
- func (v *VirtualMachine) Delete() (task *Task, err error)
- func (v *VirtualMachine) FirewallGetRules() (rules []*FirewallRule, err error)
- func (v *VirtualMachine) FirewallOptionGet() (firewallOption *FirewallVirtualMachineOption, err error)
- func (v *VirtualMachine) FirewallOptionSet(firewallOption *FirewallVirtualMachineOption) error
- func (v *VirtualMachine) FirewallRulesCreate(rule *FirewallRule) error
- func (v *VirtualMachine) FirewallRulesDelete(rulePos int) error
- func (v *VirtualMachine) FirewallRulesUpdate(rule *FirewallRule) error
- func (v *VirtualMachine) HasTag(value string) bool
- func (v *VirtualMachine) Hibernate() (task *Task, err error)
- func (v *VirtualMachine) IsHibernated() bool
- func (v *VirtualMachine) IsPaused() bool
- func (v *VirtualMachine) IsRunning() bool
- func (v *VirtualMachine) IsStopped() bool
- func (v *VirtualMachine) Migrate(target, targetstorage string) (task *Task, err error)
- func (v *VirtualMachine) MoveDisk(disk string, params *VirtualMachineMoveDiskOptions) (task *Task, err error)
- func (v *VirtualMachine) NewSnapshot(name string) (task *Task, err error)
- func (v *VirtualMachine) Pause() (task *Task, err error)
- func (v *VirtualMachine) Ping() error
- func (v *VirtualMachine) Reboot() (task *Task, err error)
- func (v *VirtualMachine) RemoveTag(value string) (*Task, error)
- func (v *VirtualMachine) Reset() (task *Task, err error)
- func (v *VirtualMachine) ResizeDisk(disk, size string) (err error)
- func (v *VirtualMachine) Resume() (task *Task, err error)
- func (v *VirtualMachine) Shutdown() (task *Task, err error)
- func (v *VirtualMachine) SnapshotRollback(name string) (task *Task, err error)
- func (v *VirtualMachine) Snapshots() (snapshots []*Snapshot, err error)
- func (v *VirtualMachine) SplitTags()
- func (v *VirtualMachine) Start() (*Task, error)
- func (v *VirtualMachine) Stop() (task *Task, err error)
- func (v *VirtualMachine) TermProxy() (vnc *VNC, err error)
- func (v *VirtualMachine) UnlinkDisk(diskID string, force bool) (task *Task, err error)
- func (v *VirtualMachine) VNCWebSocket(vnc *VNC) (chan string, chan string, chan error, func() error, error)
- func (v *VirtualMachine) WaitForAgent(seconds int) error
- func (v *VirtualMachine) WaitForAgentExecExit(pid, seconds int) (*AgentExecStatus, error)
- type VirtualMachineCloneOptions
- type VirtualMachineConfig
- func (vmc *VirtualMachineConfig) MergeHostPCIs() map[string]string
- func (vmc *VirtualMachineConfig) MergeIDEs() map[string]string
- func (vmc *VirtualMachineConfig) MergeIPConfigs() map[string]string
- func (vmc *VirtualMachineConfig) MergeNets() map[string]string
- func (vmc *VirtualMachineConfig) MergeNumas() map[string]string
- func (vmc *VirtualMachineConfig) MergeParallels() map[string]string
- func (vmc *VirtualMachineConfig) MergeSATAs() map[string]string
- func (vmc *VirtualMachineConfig) MergeSCSIs() map[string]string
- func (vmc *VirtualMachineConfig) MergeSerials() map[string]string
- func (vmc *VirtualMachineConfig) MergeUSBs() map[string]string
- func (vmc *VirtualMachineConfig) MergeUnuseds() map[string]string
- func (vmc *VirtualMachineConfig) MergeVirtIOs() map[string]string
- type VirtualMachineMoveDiskOptions
- type VirtualMachineOption
- type VirtualMachineOptions
- type VirtualMachines
- type Volume
- type VzTmpl
- type VzTmpls
Constants ¶
const ( LevelError = iota + 1 LevelWarn LevelInfo LevelDebug )
const ( DefaultUserAgent = "go-proxmox/dev" TagFormat = "go-proxmox+%s" )
const ( StatusVirtualMachineRunning = "running" StatusVirtualMachineStopped = "stopped" StatusVirtualMachinePaused = "paused" UserDataISOFormat = "user-data-%d.iso" )
const (
TaskRunning = "running"
)
Variables ¶
var DefaultWaitInterval = 1 * time.Second
var ErrNotAuthorized = errors.New("not authorized to access endpoint")
var ErrNotFound = errors.New("unable to find the item you are looking for")
var ErrTimeout = errors.New("the operation has timed out")
Functions ¶
func IsNotAuthorized ¶
func IsNotFound ¶
Types ¶
type AgentExecStatus ¶
type AgentNetworkIPAddress ¶
type AgentNetworkIface ¶
type AgentNetworkIface struct { Name string `json:"name"` HardwareAddress string `json:"hardware-address"` IPAddresses []*AgentNetworkIPAddress `json:"ip-addresses"` }
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 Client ¶
type Client struct {
// contains filtered or unexported fields
}
func (*Client) Nodes ¶
func (c *Client) Nodes() (ns NodeStatuses, err error)
func (*Client) Upload ¶
Upload - There is some weird 16kb limit hardcoded in proxmox for the max POST size, hopefully in the future we make a func to scp the file to the node directly as this API endpoint is kind of janky. For now big ISOs/vztmpl should be put somewhere and a use DownloadUrl. code link for posterity, I think they meant to do 16mb and got the bit math wrong https://git.proxmox.com/?p=pve-manager.git;a=blob;f=PVE/HTTPServer.pm;h=8a0c308ea6d6601b886b0dec2bada3d4c3da65d0;hb=HEAD#l36 the task returned is the imgcopy from the tmp file to where the node actually wants the iso and you should wait for that to complete before using the iso
func (*Client) VNCWebSocket ¶
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) error
func (*Cluster) Resources ¶
func (cl *Cluster) Resources(filters ...string) (rs ClusterResources, err error)
Resources retrieves a summary list of all resources in the cluster. It calls /cluster/resources api v2 endpoint with an optional "type" parameter to filter searched values. It returns a list of ClusterResources.
func (*Cluster) UnmarshalJSON ¶
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 Container ¶
type Container 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 (*Container) Reboot ¶
func (c *Container) Reboot() (status *ContainerStatus, err error)
func (*Container) Resume ¶
func (c *Container) Resume() (status *ContainerStatus, err error)
func (*Container) Stop ¶
func (c *Container) Stop() (status *ContainerStatus, err error)
func (*Container) Suspend ¶
func (c *Container) Suspend() (status *ContainerStatus, err error)
type ContainerStatus ¶
type ContainerStatus struct {
Data string `json:",omitempty"`
}
type ContainerStatuses ¶
type ContainerStatuses []*ContainerStatus
type Containers ¶
type Containers []*Container
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 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() error
func (*FirewallSecurityGroup) GetRules ¶
func (g *FirewallSecurityGroup) GetRules() ([]*FirewallRule, error)
func (*FirewallSecurityGroup) RuleCreate ¶
func (g *FirewallSecurityGroup) RuleCreate(rule *FirewallRule) error
func (*FirewallSecurityGroup) RuleDelete ¶
func (g *FirewallSecurityGroup) RuleDelete(rulePos int) error
func (*FirewallSecurityGroup) RuleUpdate ¶
func (g *FirewallSecurityGroup) RuleUpdate(rule *FirewallRule) 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"` Ntp bool `json:"ntp,omitempty"` PolicyIn string `json:"policy_in,omitempty"` PolicyOut string `json:"policy_out,omitempty"` Radv bool `json:"radv,omitempty"` }
type IsTemplate ¶
type IsTemplate bool
func (*IsTemplate) UnmarshalJSON ¶
func (it *IsTemplate) UnmarshalJSON(b []byte) error
type LeveledLogger ¶
type LeveledLogger struct { // Level is the minimum logging level that will be emitted by this logger. // // For example, a Level set to LevelWarn will emit warnings and errors, but // not informational or debug messages. // // Always set this with a constant like LevelWarn because the individual // values are not guaranteed to be stable. Level int // contains filtered or unexported fields }
func (*LeveledLogger) Debugf ¶
func (l *LeveledLogger) Debugf(format string, v ...interface{})
Debugf logs a debug message using Printf conventions.
func (*LeveledLogger) Errorf ¶
func (l *LeveledLogger) Errorf(format string, v ...interface{})
Errorf logs a warning message using Printf conventions.
func (*LeveledLogger) Infof ¶
func (l *LeveledLogger) Infof(format string, v ...interface{})
Infof logs an informational message using Printf conventions.
func (*LeveledLogger) Warnf ¶
func (l *LeveledLogger) Warnf(format string, v ...interface{})
Warnf logs a warning message using Printf conventions.
type LeveledLoggerInterface ¶
type Log ¶
func (*Log) UnmarshalJSON ¶
line numbers in the response start a 1 but the start param indexes from 0 so converting to that
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) Containers ¶
func (n *Node) Containers() (c Containers, err error)
func (*Node) DownloadAppliance ¶
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) error
func (*Node) FirewallRulesCreate ¶
func (n *Node) FirewallRulesCreate(rule *FirewallRule) error
func (*Node) FirewallRulesDelete ¶
func (*Node) FirewallRulesUpdate ¶
func (n *Node) FirewallRulesUpdate(rule *FirewallRule) error
func (*Node) NetworkReload ¶
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(vmid int, options ...VirtualMachineOption) (*Task, error)
func (*Node) StorageBackup ¶
func (*Node) StorageISO ¶
func (*Node) StorageImages ¶
func (*Node) StorageRootDir ¶
func (*Node) StorageVZTmpl ¶
func (*Node) VNCWebSocket ¶
VNCWebSocket send, recv, errors, closer, error
func (*Node) VirtualMachine ¶
func (n *Node) VirtualMachine(vmid int) (*VirtualMachine, error)
func (*Node) VirtualMachines ¶
func (n *Node) VirtualMachines() (vms VirtualMachines, 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)
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"` Uptime uint64 `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 WithAPIToken ¶
func WithClient ¶
func WithLogger ¶
func WithLogger(logger LeveledLoggerInterface) Option
func WithLogins ¶
func WithSession ¶
WithSession experimental
func WithUserAgent ¶
type Storage ¶
type Storage struct { Node string Name string `json:"storage"` Enabled int UsedFraction float64 `json:"used_fraction"` Active int Content string Avail uint64 Type string Used uint64 Total uint64 Storage string // contains filtered or unexported fields }
func (*Storage) DownloadURL ¶
type StringOrInt ¶
type StringOrInt int
func (*StringOrInt) UnmarshalJSON ¶
func (d *StringOrInt) UnmarshalJSON(b []byte) error
type StringOrUint64 ¶
type StringOrUint64 uint64
func (*StringOrUint64) UnmarshalJSON ¶
func (d *StringOrUint64) UnmarshalJSON(b []byte) error
type Task ¶
type Task struct { UPID UPID 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 (*Task) UnmarshalJSON ¶
func (*Task) WaitForCompleteStatus ¶
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, inputData string) (pid int, err error)
func (*VirtualMachine) AgentExecStatus ¶
func (v *VirtualMachine) AgentExecStatus(pid int) (status *AgentExecStatus, 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) error
func (*VirtualMachine) Clone ¶
func (v *VirtualMachine) Clone(params *VirtualMachineCloneOptions) (newid int, task *Task, err error)
func (*VirtualMachine) CloudInit ¶
func (v *VirtualMachine) CloudInit(device, userdata, metadata, vendordata, networkconfig string) error
CloudInit takes four yaml docs as a string and make an ISO, upload it to the data store as <vmid>-user-data.iso and will mount it as a CDROM to be used with nocloud cloud-init. This is NOT how proxmox expects a user to do cloud-init which can be found here: https://pve.proxmox.com/wiki/Cloud-Init_Support#:~:text=and%20meta.-,Cloud%2DInit%20specific%20Options,-cicustom%3A%20%5Bmeta If you want to use the proxmox implementation you'll need to use the cloudinit APIs https://pve.proxmox.com/pve-docs/api-viewer/index.html#/nodes/{node}/qemu/{vmid}/cloudinit
func (*VirtualMachine) Config ¶
func (v *VirtualMachine) Config(options ...VirtualMachineOption) (*Task, 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) error
func (*VirtualMachine) FirewallRulesCreate ¶
func (v *VirtualMachine) FirewallRulesCreate(rule *FirewallRule) error
func (*VirtualMachine) FirewallRulesDelete ¶
func (v *VirtualMachine) FirewallRulesDelete(rulePos int) error
func (*VirtualMachine) FirewallRulesUpdate ¶
func (v *VirtualMachine) FirewallRulesUpdate(rule *FirewallRule) error
func (*VirtualMachine) HasTag ¶
func (v *VirtualMachine) HasTag(value string) bool
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) Migrate ¶
func (v *VirtualMachine) Migrate(target, targetstorage string) (task *Task, err error)
func (*VirtualMachine) MoveDisk ¶
func (v *VirtualMachine) MoveDisk(disk string, params *VirtualMachineMoveDiskOptions) (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) ResizeDisk ¶
func (v *VirtualMachine) ResizeDisk(disk, size string) (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) SnapshotRollback ¶
func (v *VirtualMachine) SnapshotRollback(name string) (task *Task, err error)
func (*VirtualMachine) Snapshots ¶
func (v *VirtualMachine) Snapshots() (snapshots []*Snapshot, err error)
func (*VirtualMachine) SplitTags ¶
func (v *VirtualMachine) SplitTags()
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) UnlinkDisk ¶
func (v *VirtualMachine) UnlinkDisk(diskID string, force bool) (task *Task, 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) WaitForAgent ¶
func (v *VirtualMachine) WaitForAgent(seconds int) error
func (*VirtualMachine) WaitForAgentExecExit ¶
func (v *VirtualMachine) WaitForAgentExecExit(pid, seconds int) (*AgentExecStatus, error)
type VirtualMachineCloneOptions ¶
type VirtualMachineCloneOptions struct { NewID int `json:"newid"` BWLimit uint64 `json:"bwlimit,omitempty"` Description string `json:"description,omitempty"` Format string `json:"format,omitempty"` Full uint8 `json:"full,omitempty"` Name string `json:"name,omitempty"` Pool string `json:"pool,omitempty"` SnapName string `json:"snapname,omitempty"` Storage string `json:"storage,omitempty"` Target string `json:"target,omitempty"` }
type VirtualMachineConfig ¶
type VirtualMachineConfig struct { // PVE Metadata Digest string `json:"digest"` Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` Meta string `json:"meta,omitempty"` VMGenID string `json:"vmgenid,omitempty"` Hookscript string `json:"hookscript,omitempty"` Hotplug string `json:"hotplug,omitempty"` Template int `json:"template,omitempty"` Tags string `json:"tags,omitempty"` TagsSlice []string `json:"-"` // internal helper to manage tags easier Protection int `json:"protection,omitempty"` Lock string `json:"lock,omitempty"` // Boot configuration Boot string `json:"boot,omitempty"` OnBoot int `json:"onboot,omitempty"` // Qemu general specs OSType string `json:"ostype,omitempty"` Machine string `json:"machine,omitempty"` Args string `json:"args,omitempty"` // Qemu firmware specs Bios string `json:"bios,omitempty"` EFIDisk0 string `json:"efidisk0,omitempty"` SMBios1 string `json:"smbios1,omitempty"` Acpi int `json:"acpi,omitempty"` // Qemu CPU specs Sockets int `json:"sockets,omitempty"` Cores int `json:"cores,omitempty"` CPU string `json:"cpu,omitempty"` CPULimit int `json:"cpulimit,omitempty"` CPUUnits int `json:"cpuunits,omitempty"` Vcpus int `json:"vcpus,omitempty"` Affinity string `json:"affinity,omitempty"` // Qemu memory specs Numa int `json:"numa,omitempty"` Memory int `json:"memory,omitempty"` Hugepages string `json:"hugepages,omitempty"` Balloon int `json:"balloon,omitempty"` // Other Qemu devices VGA string `json:"vga,omitempty"` SCSIHW string `json:"scsihw,omitempty"` TPMState0 string `json:"tpmstate0,omitempty"` Rng0 string `json:"rng0,omitempty"` Audio0 string `json:"audio0,omitempty"` // Disk devices IDEs map[string]string `json:"-"` IDE0 string `json:"ide0,omitempty"` IDE1 string `json:"ide1,omitempty"` IDE2 string `json:"ide2,omitempty"` IDE3 string `json:"ide3,omitempty"` SCSIs map[string]string `json:"-"` SCSI0 string `json:"scsi0,omitempty"` SCSI1 string `json:"scsi1,omitempty"` SCSI2 string `json:"scsi2,omitempty"` SCSI3 string `json:"scsi3,omitempty"` SCSI4 string `json:"scsi4,omitempty"` SCSI5 string `json:"scsi5,omitempty"` SCSI6 string `json:"scsi6,omitempty"` SCSI7 string `json:"scsi7,omitempty"` SCSI8 string `json:"scsi8,omitempty"` SCSI9 string `json:"scsi9,omitempty"` SCSI10 string `json:"scsi10,omitempty"` SCSI11 string `json:"scsi11,omitempty"` SCSI12 string `json:"scsi12,omitempty"` SCSI13 string `json:"scsi13,omitempty"` SCSI14 string `json:"scsi14,omitempty"` SCSI15 string `json:"scsi15,omitempty"` SCSI16 string `json:"scsi16,omitempty"` SCSI17 string `json:"scsi17,omitempty"` SCSI18 string `json:"scsi18,omitempty"` SCSI19 string `json:"scsi19,omitempty"` SCSI20 string `json:"scsi20,omitempty"` SCSI21 string `json:"scsi21,omitempty"` SCSI22 string `json:"scsi22,omitempty"` SCSI23 string `json:"scsi23,omitempty"` SCSI24 string `json:"scsi24,omitempty"` SCSI25 string `json:"scsi25,omitempty"` SCSI26 string `json:"scsi26,omitempty"` SCSI27 string `json:"scsi27,omitempty"` SCSI28 string `json:"scsi28,omitempty"` SCSI29 string `json:"scsi29,omitempty"` SCSI30 string `json:"scsi30,omitempty"` SATAs map[string]string `json:"-"` SATA0 string `json:"sata0,omitempty"` SATA1 string `json:"sata1,omitempty"` SATA2 string `json:"sata2,omitempty"` SATA3 string `json:"sata3,omitempty"` SATA4 string `json:"sata4,omitempty"` SATA5 string `json:"sata5,omitempty"` VirtIOs map[string]string `json:"-"` VirtIO0 string `json:"virtio0,omitempty"` VirtIO1 string `json:"virtio1,omitempty"` VirtIO2 string `json:"virtio2,omitempty"` VirtIO3 string `json:"virtio3,omitempty"` VirtIO4 string `json:"virtio4,omitempty"` VirtIO5 string `json:"virtio5,omitempty"` VirtIO6 string `json:"virtio6,omitempty"` VirtIO7 string `json:"virtio7,omitempty"` VirtIO8 string `json:"virtio8,omitempty"` VirtIO9 string `json:"virtio9,omitempty"` VirtIO10 string `json:"virtio10,omitempty"` VirtIO11 string `json:"virtio11,omitempty"` VirtIO12 string `json:"virtio12,omitempty"` VirtIO13 string `json:"virtio13,omitempty"` VirtIO14 string `json:"virtio14,omitempty"` VirtIO15 string `json:"virtio15,omitempty"` Unuseds map[string]string `json:"-"` Unused0 string `json:"unused0,omitempty"` Unused1 string `json:"unused1,omitempty"` Unused2 string `json:"unused2,omitempty"` Unused3 string `json:"unused3,omitempty"` Unused4 string `json:"unused4,omitempty"` Unused5 string `json:"unused5,omitempty"` Unused6 string `json:"unused6,omitempty"` Unused7 string `json:"unused7,omitempty"` Unused8 string `json:"unused8,omitempty"` Unused9 string `json:"unused9,omitempty"` // Network devices Nets map[string]string `json:"-"` Net0 string `json:"net0,omitempty"` Net1 string `json:"net1,omitempty"` Net2 string `json:"net2,omitempty"` Net3 string `json:"net3,omitempty"` Net4 string `json:"net4,omitempty"` Net5 string `json:"net5,omitempty"` Net6 string `json:"net6,omitempty"` Net7 string `json:"net7,omitempty"` Net8 string `json:"net8,omitempty"` Net9 string `json:"net9,omitempty"` // NUMA topology Numas map[string]string `json:"-"` Numa0 string `json:"numa0,omitempty"` Numa1 string `json:"numa1,omitempty"` Numa2 string `json:"numa2,omitempty"` Numa3 string `json:"numa3,omitempty"` Numa4 string `json:"numa4,omitempty"` Numa5 string `json:"numa5,omitempty"` Numa6 string `json:"numa6,omitempty"` Numa7 string `json:"numa7,omitempty"` Numa8 string `json:"numa8,omitempty"` Numa9 string `json:"numa9,omitempty"` // Host PCI devices HostPCIs map[string]string `json:"-"` HostPCI0 string `json:"hostpci0,omitempty"` HostPCI1 string `json:"hostpci1,omitempty"` HostPCI2 string `json:"hostpci2,omitempty"` HostPCI3 string `json:"hostpci3,omitempty"` HostPCI4 string `json:"hostpci4,omitempty"` HostPCI5 string `json:"hostpci5,omitempty"` HostPCI6 string `json:"hostpci6,omitempty"` HostPCI7 string `json:"hostpci7,omitempty"` HostPCI8 string `json:"hostpci8,omitempty"` HostPCI9 string `json:"hostpci9,omitempty"` // Serial devices Serials map[string]string `json:"-"` Serial0 string `json:"serial0,omitempty"` Serial1 string `json:"serial1,omitempty"` Serial2 string `json:"serial2,omitempty"` Serial3 string `json:"serial3,omitempty"` // USB devices USBs map[string]string `json:"-"` USB0 string `json:"usb0,omitempty"` USB1 string `json:"usb1,omitempty"` USB2 string `json:"usb2,omitempty"` USB3 string `json:"usb3,omitempty"` USB4 string `json:"usb4,omitempty"` USB5 string `json:"usb5,omitempty"` USB6 string `json:"usb6,omitempty"` USB7 string `json:"usb7,omitempty"` USB8 string `json:"usb8,omitempty"` USB9 string `json:"usb9,omitempty"` USB10 string `json:"usb10,omitempty"` USB11 string `json:"usb11,omitempty"` USB12 string `json:"usb12,omitempty"` USB13 string `json:"usb13,omitempty"` USB14 string `json:"usb14,omitempty"` // Parallel devices Parallels map[string]string `json:"-"` Parallel0 string `json:"parallel0,omitempty"` Parallel1 string `json:"parallel1,omitempty"` Parallel2 string `json:"parallel2,omitempty"` // Cloud-init CIType string `json:"citype,omitempty"` CIUser string `json:"ciuser,omitempty"` CIPassword string `json:"cipassword,omitempty"` Nameserver string `json:"nameserver,omitempty"` Searchdomain string `json:"searchdomain,omitempty"` SSHKeys string `json:"sshkeys,omitempty"` CICustom string `json:"cicustom,omitempty"` // Cloud-init interfaces IPConfigs map[string]string `json:"-"` IPConfig0 string `json:"ipconfig0,omitempty"` IPConfig1 string `json:"ipconfig1,omitempty"` IPConfig2 string `json:"ipconfig2,omitempty"` IPConfig3 string `json:"ipconfig3,omitempty"` IPConfig4 string `json:"ipconfig4,omitempty"` IPConfig5 string `json:"ipconfig5,omitempty"` IPConfig6 string `json:"ipconfig6,omitempty"` IPConfig7 string `json:"ipconfig7,omitempty"` IPConfig8 string `json:"ipconfig8,omitempty"` IPConfig9 string `json:"ipconfig9,omitempty"` }
func (*VirtualMachineConfig) MergeHostPCIs ¶
func (vmc *VirtualMachineConfig) MergeHostPCIs() map[string]string
func (*VirtualMachineConfig) MergeIDEs ¶
func (vmc *VirtualMachineConfig) MergeIDEs() map[string]string
func (*VirtualMachineConfig) MergeIPConfigs ¶
func (vmc *VirtualMachineConfig) MergeIPConfigs() map[string]string
func (*VirtualMachineConfig) MergeNets ¶
func (vmc *VirtualMachineConfig) MergeNets() map[string]string
func (*VirtualMachineConfig) MergeNumas ¶
func (vmc *VirtualMachineConfig) MergeNumas() map[string]string
func (*VirtualMachineConfig) MergeParallels ¶
func (vmc *VirtualMachineConfig) MergeParallels() map[string]string
func (*VirtualMachineConfig) MergeSATAs ¶
func (vmc *VirtualMachineConfig) MergeSATAs() map[string]string
func (*VirtualMachineConfig) MergeSCSIs ¶
func (vmc *VirtualMachineConfig) MergeSCSIs() map[string]string
func (*VirtualMachineConfig) MergeSerials ¶
func (vmc *VirtualMachineConfig) MergeSerials() map[string]string
func (*VirtualMachineConfig) MergeUSBs ¶
func (vmc *VirtualMachineConfig) MergeUSBs() map[string]string
func (*VirtualMachineConfig) MergeUnuseds ¶
func (vmc *VirtualMachineConfig) MergeUnuseds() map[string]string
func (*VirtualMachineConfig) MergeVirtIOs ¶
func (vmc *VirtualMachineConfig) MergeVirtIOs() map[string]string
type VirtualMachineMoveDiskOptions ¶
type VirtualMachineMoveDiskOptions struct { Disk string `json:"disk"` BWLimit uint64 `json:"bwlimit,omitempty"` Delete uint8 `json:"delete,omitempty"` Digest string `json:"digest,omitempty"` Format string `json:"format,omitempty"` Storage string `json:"storage,omitempty"` TargetDigest string `json:"target-digest,omitempty"` TargetDisk string `json:"target-disk,omitempty"` TargetVMID int `json:"target-vmid,omitempty"` }
type VirtualMachineOption ¶
type VirtualMachineOption struct { Name string Value interface{} }
type VirtualMachineOptions ¶
type VirtualMachineOptions []*VirtualMachineOption
type VirtualMachines ¶
type VirtualMachines []*VirtualMachine