virtpb

package module
v0.2.64 Latest Latest
Warning

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

Go to latest
Published: Nov 6, 2025 License: GPL-3.0 Imports: 27 Imported by: 9

README

This go library handles the protobuf files and various functions for virtigo.

You must build the protobuf files using autogenpb

go install go.wit.com/apps/autogenpb@latest

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	DropletState_name = map[int32]string{
		0: "ON",
		1: "OFF",
		2: "UNKNOWN",
		3: "PAUSED",
		4: "CRASHED",
		5: "INMIGRATE",
	}
	DropletState_value = map[string]int32{
		"ON":        0,
		"OFF":       1,
		"UNKNOWN":   2,
		"PAUSED":    3,
		"CRASHED":   4,
		"INMIGRATE": 5,
	}
)

Enum value maps for DropletState.

View Source
var (
	DropletArchive_name = map[int32]string{
		0: "DUP",
		1: "USER",
	}
	DropletArchive_value = map[string]int32{
		"DUP":  0,
		"USER": 1,
	}
)

Enum value maps for DropletArchive.

View Source
var (
	EventType_name = map[int32]string{
		0:  "ADD",
		1:  "DELETE",
		2:  "POWERON",
		3:  "POWEROFF",
		4:  "HIBERNATE",
		5:  "MIGRATE",
		6:  "DEMO",
		7:  "GET",
		8:  "LOGIN",
		9:  "OK",
		10: "FAIL",
		11: "CRASH",
		12: "CHANGE",
		13: "EDIT",
	}
	EventType_value = map[string]int32{
		"ADD":       0,
		"DELETE":    1,
		"POWERON":   2,
		"POWEROFF":  3,
		"HIBERNATE": 4,
		"MIGRATE":   5,
		"DEMO":      6,
		"GET":       7,
		"LOGIN":     8,
		"OK":        9,
		"FAIL":      10,
		"CRASH":     11,
		"CHANGE":    12,
		"EDIT":      13,
	}
)

Enum value maps for EventType.

View Source
var (
	EventStatus_name = map[int32]string{
		0: "DONE",
		1: "FAIL",
		2: "RUNNING",
	}
	EventStatus_value = map[string]int32{
		"DONE":    0,
		"FAIL":    1,
		"RUNNING": 2,
	}
)

Enum value maps for EventStatus.

View Source
var (
	HypervisorArch_name = map[int32]string{
		0: "RISCV64",
		1: "X86_64",
		2: "ARM64",
	}
	HypervisorArch_value = map[string]int32{
		"RISCV64": 0,
		"X86_64":  1,
		"ARM64":   2,
	}
)

Enum value maps for HypervisorArch.

View Source
var File_cluster_proto protoreflect.FileDescriptor
View Source
var File_droplet_proto protoreflect.FileDescriptor
View Source
var File_event_proto protoreflect.FileDescriptor
View Source
var File_hypervisor_proto protoreflect.FileDescriptor

Functions

func ConfigWriteJSON

func ConfigWriteJSON(a any, filename string) error

func ConfigWriteTEXT

func ConfigWriteTEXT(a any, filename string) error

func FormatDuration added in v0.2.1

func FormatDuration(d time.Duration) string

func HumanFormatBytes

func HumanFormatBytes(b int64) string

This isn't for the marketing department so this isn't going to use 'MiB' and 'GiB'

func SetGB

func SetGB(gb int) int64

can the json protobuf output use a string and have a type handler to convert it back to int64?

func SetMB

func SetMB(mb int) int64

Types

type Archive added in v0.2.23

type Archive struct {
	Reason DropletArchive         `protobuf:"varint,1,opt,name=reason,proto3,enum=virtpb.DropletArchive" json:"reason,omitempty"` // why the droplet was archived
	When   *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=when,proto3" json:"when,omitempty"`                                 // when it was archived
	// contains filtered or unexported fields
}

func (*Archive) Descriptor deprecated added in v0.2.23

func (*Archive) Descriptor() ([]byte, []int)

Deprecated: Use Archive.ProtoReflect.Descriptor instead.

func (*Archive) GetReason added in v0.2.23

func (x *Archive) GetReason() DropletArchive

func (*Archive) GetWhen added in v0.2.23

func (x *Archive) GetWhen() *timestamppb.Timestamp

func (*Archive) ProtoMessage added in v0.2.23

func (*Archive) ProtoMessage()

func (*Archive) ProtoReflect added in v0.2.23

func (x *Archive) ProtoReflect() protoreflect.Message

func (*Archive) Reset added in v0.2.23

func (x *Archive) Reset()

func (*Archive) String added in v0.2.23

func (x *Archive) String() string

type ArchiveScanner added in v0.2.34

type ArchiveScanner struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*ArchiveScanner) Next added in v0.2.34

func (it *ArchiveScanner) Next() *Archive

Next() returns the next thing in the array

func (*ArchiveScanner) Scan added in v0.2.34

func (it *ArchiveScanner) Scan() bool

type Cluster added in v0.2.5

type Cluster struct {
	Uuid        string                 `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` // `autogenpb:unique`
	Name        string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	URL         []string               `protobuf:"bytes,3,rep,name=URL,proto3" json:"URL,omitempty"`
	Ctime       *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=ctime,proto3" json:"ctime,omitempty"` // when the cluster was created
	Droplets    *Droplets              `protobuf:"bytes,5,opt,name=droplets,proto3" json:"droplets,omitempty"`
	Hypervisors *Hypervisors           `protobuf:"bytes,6,opt,name=hypervisors,proto3" json:"hypervisors,omitempty"`
	Events      *Events                `protobuf:"bytes,7,opt,name=events,proto3" json:"events,omitempty"`
	// contains filtered or unexported fields
}

func (*Cluster) ConfigSave added in v0.2.5

func (c *Cluster) ConfigSave() error

func (*Cluster) Descriptor deprecated added in v0.2.33

func (*Cluster) Descriptor() ([]byte, []int)

Deprecated: Use Cluster.ProtoReflect.Descriptor instead.

func (*Cluster) FormatJSON added in v0.2.36

func (v *Cluster) FormatJSON() string

human readable JSON

func (*Cluster) FormatTEXT added in v0.2.36

func (v *Cluster) FormatTEXT() string

apparently this isn't stable, but it's awesomely better https://protobuf.dev/reference/go/faq/#unstable-text it's brilliant for config files!

func (*Cluster) GetCtime added in v0.2.33

func (x *Cluster) GetCtime() *timestamppb.Timestamp

func (*Cluster) GetDroplets added in v0.2.35

func (x *Cluster) GetDroplets() *Droplets

func (*Cluster) GetEvents added in v0.2.36

func (x *Cluster) GetEvents() *Events

func (*Cluster) GetHypervisors added in v0.2.35

func (x *Cluster) GetHypervisors() *Hypervisors

func (*Cluster) GetName added in v0.2.35

func (x *Cluster) GetName() string

func (*Cluster) GetURL added in v0.2.33

func (x *Cluster) GetURL() []string

func (*Cluster) GetUuid added in v0.2.33

func (x *Cluster) GetUuid() string

func (*Cluster) Marshal added in v0.2.36

func (v *Cluster) Marshal() ([]byte, error)

marshal to wire. This is called winning.

func (*Cluster) MarshalJSON added in v0.2.36

func (v *Cluster) MarshalJSON() ([]byte, error)

marshal json

func (*Cluster) ProtoMessage added in v0.2.33

func (*Cluster) ProtoMessage()

func (*Cluster) ProtoReflect added in v0.2.33

func (x *Cluster) ProtoReflect() protoreflect.Message

func (*Cluster) Reset added in v0.2.33

func (x *Cluster) Reset()

func (*Cluster) String added in v0.2.33

func (x *Cluster) String() string

func (*Cluster) Unmarshal added in v0.2.36

func (v *Cluster) Unmarshal(data []byte) error

unmarshal from wire. You have won.

func (*Cluster) UnmarshalJSON added in v0.2.36

func (v *Cluster) UnmarshalJSON(data []byte) error

unmarshal json

func (*Cluster) UnmarshalTEXT added in v0.2.36

func (v *Cluster) UnmarshalTEXT(data []byte) error

unmarshalTEXT. This reads the .text config file back in after the user edits it

type ClusterScanner added in v0.2.34

type ClusterScanner struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*ClusterScanner) Next added in v0.2.34

func (it *ClusterScanner) Next() *Cluster

Next() returns the next thing in the array

func (*ClusterScanner) Scan added in v0.2.34

func (it *ClusterScanner) Scan() bool

type Clusters added in v0.2.33

type Clusters struct {
	Uuid     string     `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"`       // `autogenpb:uuid:57ddd763-75f6-4003-bf0e-8dd0f8a44044`
	Version  string     `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` // `autogenpb:version:v0.0.1`
	Clusters []*Cluster `protobuf:"bytes,3,rep,name=clusters,proto3" json:"clusters,omitempty"`
	// contains filtered or unexported fields
}

func NewClusters added in v0.2.33

func NewClusters() *Clusters

func (*Clusters) All added in v0.2.33

func (x *Clusters) All() *ClusterScanner

func (*Clusters) Append added in v0.2.33

func (x *Clusters) Append(y *Cluster)

a Append() shortcut (that does Clone() with a mutex) notsure if it really works doesn't allow nil

func (*Clusters) AppendByUuid added in v0.2.33

func (x *Clusters) AppendByUuid(y *Cluster) bool

func (*Clusters) Clone added in v0.2.57

func (x *Clusters) Clone(y *Cluster) *Cluster

a Clone() shortcut (with a mutex). notsure if it really works

func (*Clusters) CloneByUuid added in v0.2.57

func (x *Clusters) CloneByUuid(y *Cluster) bool

func (*Clusters) ConfigLoad added in v0.2.33

func (c *Clusters) ConfigLoad() error

func (*Clusters) Delete added in v0.2.33

func (x *Clusters) Delete(y *Cluster) bool

func (*Clusters) DeleteByUuid added in v0.2.33

func (x *Clusters) DeleteByUuid(s string) bool

func (*Clusters) Descriptor deprecated added in v0.2.33

func (*Clusters) Descriptor() ([]byte, []int)

Deprecated: Use Clusters.ProtoReflect.Descriptor instead.

func (*Clusters) FindByUuid added in v0.2.33

func (x *Clusters) FindByUuid(s string) *Cluster

lookup a Clusters by the Uuid

func (*Clusters) FormatJSON added in v0.2.33

func (v *Clusters) FormatJSON() string

human readable JSON

func (*Clusters) FormatTEXT added in v0.2.33

func (v *Clusters) FormatTEXT() string

apparently this isn't stable, but it's awesomely better https://protobuf.dev/reference/go/faq/#unstable-text it's brilliant for config files!

func (*Clusters) GetClusters added in v0.2.33

func (x *Clusters) GetClusters() []*Cluster

func (*Clusters) GetUuid added in v0.2.33

func (x *Clusters) GetUuid() string

func (*Clusters) GetVersion added in v0.2.33

func (x *Clusters) GetVersion() string

func (*Clusters) InsertByUuid added in v0.2.33

func (x *Clusters) InsertByUuid(y string) *Cluster

returns a Cluster if Uuid matches, otherwise create

func (*Clusters) IterAll added in v0.2.33

func (x *Clusters) IterAll() iter.Seq[*Cluster]

Iterate 'for x := range' syntax using the awesome golang 1.24 'iter'

func (*Clusters) Len added in v0.2.33

func (x *Clusters) Len() int

func (*Clusters) Marshal added in v0.2.33

func (v *Clusters) Marshal() ([]byte, error)

marshal to wire. This is called winning.

func (*Clusters) MarshalJSON added in v0.2.33

func (v *Clusters) MarshalJSON() ([]byte, error)

marshal json

func (*Clusters) ProtoMessage added in v0.2.33

func (*Clusters) ProtoMessage()

func (*Clusters) ProtoReflect added in v0.2.33

func (x *Clusters) ProtoReflect() protoreflect.Message

func (*Clusters) Reset added in v0.2.33

func (x *Clusters) Reset()

func (*Clusters) String added in v0.2.33

func (x *Clusters) String() string

func (*Clusters) Unmarshal added in v0.2.33

func (v *Clusters) Unmarshal(data []byte) error

unmarshal from wire. You have won.

func (*Clusters) UnmarshalJSON added in v0.2.33

func (v *Clusters) UnmarshalJSON(data []byte) error

unmarshal json

func (*Clusters) UnmarshalTEXT added in v0.2.33

func (v *Clusters) UnmarshalTEXT(data []byte) error

unmarshalTEXT. This reads the .text config file back in after the user edits it

type ClustersScanner added in v0.2.34

type ClustersScanner struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*ClustersScanner) Next added in v0.2.34

func (it *ClustersScanner) Next() *Clusters

Next() returns the next thing in the array

func (*ClustersScanner) Scan added in v0.2.34

func (it *ClustersScanner) Scan() bool

type Current added in v0.2.23

type Current struct {
	State         DropletState           `protobuf:"varint,1,opt,name=state,proto3,enum=virtpb.DropletState" json:"state,omitempty"` // used to track the current state before taking any action
	Hypervisor    string                 `protobuf:"bytes,2,opt,name=hypervisor,proto3" json:"hypervisor,omitempty"`                 // the current hypervisor the droplet is running on
	StartAttempts int64                  `protobuf:"varint,3,opt,name=startAttempts,proto3" json:"startAttempts,omitempty"`          // how many times a start has been attempted
	FullXml       string                 `protobuf:"bytes,4,opt,name=fullXml,proto3" json:"fullXml,omitempty"`                       // the full libvirt xml to import
	LastPoll      *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=lastPoll,proto3" json:"lastPoll,omitempty"`                     // the last time we heard anything from this droplet
	ImageUrl      string                 `protobuf:"bytes,6,opt,name=imageUrl,proto3" json:"imageUrl,omitempty"`                     // url to the image
	OffSince      *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=offSince,proto3" json:"offSince,omitempty"`                     // when the droplet was turned off
	OnSince       *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=onSince,proto3" json:"onSince,omitempty"`                       // when the droplet was turned on
	// contains filtered or unexported fields
}

volatile data. the current settings and values of things. These are passed around while the cluster to monitor and control the systems but they are not saved to the config file

func (*Current) Descriptor deprecated added in v0.2.23

func (*Current) Descriptor() ([]byte, []int)

Deprecated: Use Current.ProtoReflect.Descriptor instead.

func (*Current) GetFullXml added in v0.2.23

func (x *Current) GetFullXml() string

func (*Current) GetHypervisor added in v0.2.23

func (x *Current) GetHypervisor() string

func (*Current) GetImageUrl added in v0.2.23

func (x *Current) GetImageUrl() string

func (*Current) GetLastPoll added in v0.2.23

func (x *Current) GetLastPoll() *timestamppb.Timestamp

func (*Current) GetOffSince added in v0.2.23

func (x *Current) GetOffSince() *timestamppb.Timestamp

func (*Current) GetOnSince added in v0.2.23

func (x *Current) GetOnSince() *timestamppb.Timestamp

func (*Current) GetStartAttempts added in v0.2.23

func (x *Current) GetStartAttempts() int64

func (*Current) GetState added in v0.2.23

func (x *Current) GetState() DropletState

func (*Current) ProtoMessage added in v0.2.23

func (*Current) ProtoMessage()

func (*Current) ProtoReflect added in v0.2.23

func (x *Current) ProtoReflect() protoreflect.Message

func (*Current) Reset added in v0.2.23

func (x *Current) Reset()

func (*Current) String added in v0.2.23

func (x *Current) String() string

type CurrentScanner added in v0.2.34

type CurrentScanner struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*CurrentScanner) Next added in v0.2.34

func (it *CurrentScanner) Next() *Current

Next() returns the next thing in the array

func (*CurrentScanner) Scan added in v0.2.34

func (it *CurrentScanner) Scan() bool

type Disk added in v0.2.23

type Disk struct {
	Filename string `protobuf:"bytes,1,opt,name=filename,proto3" json:"filename,omitempty"`
	Filepath string `protobuf:"bytes,2,opt,name=filepath,proto3" json:"filepath,omitempty"`
	Size     int64  `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"`
	QemuArch string `protobuf:"bytes,4,opt,name=qemuArch,proto3" json:"qemuArch,omitempty"` // what arch. example: "x86_64" or "riscv64"
	// contains filtered or unexported fields
}

func (*Disk) Descriptor deprecated added in v0.2.23

func (*Disk) Descriptor() ([]byte, []int)

Deprecated: Use Disk.ProtoReflect.Descriptor instead.

func (*Disk) GetFilename added in v0.2.23

func (x *Disk) GetFilename() string

func (*Disk) GetFilepath added in v0.2.23

func (x *Disk) GetFilepath() string

func (*Disk) GetQemuArch added in v0.2.23

func (x *Disk) GetQemuArch() string

func (*Disk) GetSize added in v0.2.23

func (x *Disk) GetSize() int64

func (*Disk) ProtoMessage added in v0.2.23

func (*Disk) ProtoMessage()

func (*Disk) ProtoReflect added in v0.2.23

func (x *Disk) ProtoReflect() protoreflect.Message

func (*Disk) Reset added in v0.2.23

func (x *Disk) Reset()

func (*Disk) String added in v0.2.23

func (x *Disk) String() string

type DiskScanner added in v0.2.34

type DiskScanner struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*DiskScanner) Next added in v0.2.34

func (it *DiskScanner) Next() *Disk

Next() returns the next thing in the array

func (*DiskScanner) Scan added in v0.2.34

func (it *DiskScanner) Scan() bool

type Droplet added in v0.2.23

type Droplet struct {
	Uuid                string                 `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"`                                       // `autogenpb:unique` // should be unique across the cluster
	Hostname            string                 `protobuf:"bytes,2,opt,name=hostname,proto3" json:"hostname,omitempty"`                               // `autogenpb:unique` // should be unique and work in DNS
	Cpus                int64                  `protobuf:"varint,3,opt,name=cpus,proto3" json:"cpus,omitempty"`                                      // what's the point of int64 vs int32
	Memory              int64                  `protobuf:"varint,4,opt,name=memory,proto3" json:"memory,omitempty"`                                  // in bytes
	Current             *Current               `protobuf:"bytes,5,opt,name=current,proto3" json:"current,omitempty"`                                 // what the state and values of the droplet is
	StartState          DropletState           `protobuf:"varint,6,opt,name=startState,proto3,enum=virtpb.DropletState" json:"startState,omitempty"` // what the state of the droplet is SUPPOSED TO BE ('on' or 'off')
	QemuMachine         string                 `protobuf:"bytes,7,opt,name=qemuMachine,proto3" json:"qemuMachine,omitempty"`                         // the qemu machine type to use "pc-q35-9.0"
	SpicePort           int64                  `protobuf:"varint,8,opt,name=spicePort,proto3" json:"spicePort,omitempty"`                            // preferred port to use for spice
	PreferredHypervisor string                 `protobuf:"bytes,9,opt,name=preferredHypervisor,proto3" json:"preferredHypervisor,omitempty"`         // the hypervisor to prefer to run the droplet on
	ForceHypervisor     string                 `protobuf:"bytes,10,opt,name=forceHypervisor,proto3" json:"forceHypervisor,omitempty"`                // use this hypervisor and this hypervisor only
	PreferredArch       string                 `protobuf:"bytes,11,opt,name=preferredArch,proto3" json:"preferredArch,omitempty"`                    // the cpu arch to use "x86_64" (should really get this from the disk?)
	Networks            []*Network             `protobuf:"bytes,12,rep,name=networks,proto3" json:"networks,omitempty"`                              // really just mac addresses. should be unique across cluster
	Disks               []*Disk                `protobuf:"bytes,13,rep,name=disks,proto3" json:"disks,omitempty"`                                    // disks to attach
	LocalOnly           string                 `protobuf:"bytes,14,opt,name=localOnly,proto3" json:"localOnly,omitempty"`                            // this is only defined locally on the hypervisor
	CustomXml           string                 `protobuf:"bytes,15,opt,name=customXml,proto3" json:"customXml,omitempty"`                            // if needed,
	Archive             *Archive               `protobuf:"bytes,16,opt,name=archive,proto3" json:"archive,omitempty"`                                // what the state of the droplet is SUPPOSED TO BE ('on' or 'off')
	Unstable            *timestamppb.Timestamp `protobuf:"bytes,39,opt,name=unstable,proto3" json:"unstable,omitempty"`                              // the last time we heard anything from this droplet
	UnstableTimeout     *durationpb.Duration   `protobuf:"bytes,40,opt,name=unstableTimeout,proto3" json:"unstableTimeout,omitempty"`                // the last time we heard anything from this droplet
	// contains filtered or unexported fields
}

func CreateSampleDroplet added in v0.2.23

func CreateSampleDroplet(hostname string) *Droplet

func NewDefaultDroplet added in v0.2.23

func NewDefaultDroplet(hostname string) *Droplet

creates a new droplet with default values

func (*Droplet) Descriptor deprecated added in v0.2.23

func (*Droplet) Descriptor() ([]byte, []int)

Deprecated: Use Droplet.ProtoReflect.Descriptor instead.

func (*Droplet) DumpDroplet added in v0.2.23

func (d *Droplet) DumpDroplet(w http.ResponseWriter, r *http.Request) (string, error)

func (*Droplet) FormatJSON added in v0.2.23

func (v *Droplet) FormatJSON() string

human readable JSON

func (*Droplet) FormatTEXT added in v0.2.23

func (v *Droplet) FormatTEXT() string

apparently this isn't stable, but it's awesomely better https://protobuf.dev/reference/go/faq/#unstable-text it's brilliant for config files!

func (*Droplet) GetArchive added in v0.2.23

func (x *Droplet) GetArchive() *Archive

func (*Droplet) GetCpus added in v0.2.23

func (x *Droplet) GetCpus() int64

func (*Droplet) GetCurrent added in v0.2.23

func (x *Droplet) GetCurrent() *Current

func (*Droplet) GetCustomXml added in v0.2.23

func (x *Droplet) GetCustomXml() string

func (*Droplet) GetDisks added in v0.2.23

func (x *Droplet) GetDisks() []*Disk

func (*Droplet) GetForceHypervisor added in v0.2.23

func (x *Droplet) GetForceHypervisor() string

func (*Droplet) GetHostname added in v0.2.23

func (x *Droplet) GetHostname() string

func (*Droplet) GetLocalOnly added in v0.2.23

func (x *Droplet) GetLocalOnly() string

func (*Droplet) GetMemory added in v0.2.23

func (x *Droplet) GetMemory() int64

func (*Droplet) GetNetworks added in v0.2.23

func (x *Droplet) GetNetworks() []*Network

func (*Droplet) GetPreferredArch added in v0.2.23

func (x *Droplet) GetPreferredArch() string

func (*Droplet) GetPreferredHypervisor added in v0.2.23

func (x *Droplet) GetPreferredHypervisor() string

func (*Droplet) GetQemuMachine added in v0.2.23

func (x *Droplet) GetQemuMachine() string

func (*Droplet) GetSpicePort added in v0.2.23

func (x *Droplet) GetSpicePort() int64

func (*Droplet) GetStartState added in v0.2.23

func (x *Droplet) GetStartState() DropletState

func (*Droplet) GetUnstable added in v0.2.23

func (x *Droplet) GetUnstable() *timestamppb.Timestamp

func (*Droplet) GetUnstableTimeout added in v0.2.23

func (x *Droplet) GetUnstableTimeout() *durationpb.Duration

func (*Droplet) GetUuid added in v0.2.23

func (x *Droplet) GetUuid() string

func (*Droplet) Marshal added in v0.2.23

func (v *Droplet) Marshal() ([]byte, error)

marshal to wire. This is called winning.

func (*Droplet) MarshalJSON added in v0.2.23

func (v *Droplet) MarshalJSON() ([]byte, error)

marshal json

func (*Droplet) NewChangeEvent added in v0.2.23

func (d *Droplet) NewChangeEvent(fname string, origval any, newval any) *Event

Wrapping the int into a protobuf message

func (*Droplet) ProtoMessage added in v0.2.23

func (*Droplet) ProtoMessage()

func (*Droplet) ProtoReflect added in v0.2.23

func (x *Droplet) ProtoReflect() protoreflect.Message

func (*Droplet) Reset added in v0.2.23

func (x *Droplet) Reset()

func (*Droplet) SetCpus added in v0.2.23

func (d *Droplet) SetCpus(b int64)

update the droplet memory

func (*Droplet) SetMemory added in v0.2.23

func (d *Droplet) SetMemory(b int64) *Event

update the droplet memory

func (*Droplet) SetState added in v0.2.23

func (d *Droplet) SetState(newState DropletState)

update the droplet memory

func (*Droplet) SprintDumpHeader added in v0.2.23

func (d *Droplet) SprintDumpHeader() string

func (*Droplet) SprintHeader added in v0.2.23

func (d *Droplet) SprintHeader() string

func (*Droplet) String added in v0.2.23

func (x *Droplet) String() string

func (*Droplet) Unmarshal added in v0.2.23

func (v *Droplet) Unmarshal(data []byte) error

unmarshal from wire. You have won.

func (*Droplet) UnmarshalJSON added in v0.2.23

func (v *Droplet) UnmarshalJSON(data []byte) error

unmarshal json

func (*Droplet) UnmarshalTEXT added in v0.2.23

func (v *Droplet) UnmarshalTEXT(data []byte) error

unmarshalTEXT. This reads the .text config file back in after the user edits it

type DropletArchive added in v0.2.23

type DropletArchive int32
const (
	DropletArchive_DUP  DropletArchive = 0
	DropletArchive_USER DropletArchive = 1
)

func (DropletArchive) Descriptor added in v0.2.23

func (DropletArchive) Enum added in v0.2.23

func (x DropletArchive) Enum() *DropletArchive

func (DropletArchive) EnumDescriptor deprecated added in v0.2.23

func (DropletArchive) EnumDescriptor() ([]byte, []int)

Deprecated: Use DropletArchive.Descriptor instead.

func (DropletArchive) Number added in v0.2.23

func (DropletArchive) String added in v0.2.23

func (x DropletArchive) String() string

func (DropletArchive) Type added in v0.2.23

type DropletFunc added in v0.2.52

type DropletFunc struct {
	Custom func(*Droplet)
	Width  int
	Attr   *guipb.ColAttr
	Header *guipb.Widget
	// contains filtered or unexported fields
}

func (*DropletFunc) SetTitle added in v0.2.52

func (sf *DropletFunc) SetTitle(title string)

type DropletScanner added in v0.2.34

type DropletScanner struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*DropletScanner) Next added in v0.2.34

func (it *DropletScanner) Next() *Droplet

Next() returns the next thing in the array

func (*DropletScanner) Scan added in v0.2.34

func (it *DropletScanner) Scan() bool

type DropletState added in v0.2.23

type DropletState int32
const (
	DropletState_ON        DropletState = 0
	DropletState_OFF       DropletState = 1
	DropletState_UNKNOWN   DropletState = 2 // qemu says 'Shutdown'
	DropletState_PAUSED    DropletState = 3
	DropletState_CRASHED   DropletState = 4
	DropletState_INMIGRATE DropletState = 5
)

func (DropletState) Descriptor added in v0.2.23

func (DropletState) Enum added in v0.2.23

func (x DropletState) Enum() *DropletState

func (DropletState) EnumDescriptor deprecated added in v0.2.23

func (DropletState) EnumDescriptor() ([]byte, []int)

Deprecated: Use DropletState.Descriptor instead.

func (DropletState) Number added in v0.2.23

func (DropletState) String added in v0.2.23

func (x DropletState) String() string

func (DropletState) Type added in v0.2.23

type Droplets added in v0.2.23

type Droplets struct {
	Uuid     string     `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"`       // `autogenpb:uuid:d5d492e2-38d4-476b-86f3-f5abf01f9d6d`
	Version  string     `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` // `autogenpb:version:v0.0.1`
	Droplets []*Droplet `protobuf:"bytes,3,rep,name=droplets,proto3" json:"droplets,omitempty"`
	Filename string     `protobuf:"bytes,4,opt,name=filename,proto3" json:"filename,omitempty"` // `autogenpb:save` -- this enables autogenerated pb.Load() and pb.Save()
	// contains filtered or unexported fields
}

func NewDroplets added in v0.2.23

func NewDroplets() *Droplets

func (*Droplets) All added in v0.2.23

func (x *Droplets) All() *DropletScanner

func (*Droplets) Append added in v0.2.23

func (x *Droplets) Append(y *Droplet)

a Append() shortcut (that does Clone() with a mutex) notsure if it really works doesn't allow nil

func (*Droplets) AppendByHostname added in v0.2.23

func (x *Droplets) AppendByHostname(y *Droplet) bool

func (*Droplets) AppendByUuid added in v0.2.23

func (x *Droplets) AppendByUuid(y *Droplet) bool

func (*Droplets) Clone added in v0.2.57

func (x *Droplets) Clone(y *Droplet) *Droplet

a Clone() shortcut (with a mutex). notsure if it really works

func (*Droplets) CloneByHostname added in v0.2.57

func (x *Droplets) CloneByHostname(y *Droplet) bool

func (*Droplets) CloneByUuid added in v0.2.57

func (x *Droplets) CloneByUuid(y *Droplet) bool

func (*Droplets) Delete added in v0.2.23

func (x *Droplets) Delete(y *Droplet) bool

func (*Droplets) DeleteByHostname added in v0.2.23

func (x *Droplets) DeleteByHostname(s string) bool

func (*Droplets) DeleteByUuid added in v0.2.23

func (x *Droplets) DeleteByUuid(s string) bool

func (*Droplets) Descriptor deprecated added in v0.2.23

func (*Droplets) Descriptor() ([]byte, []int)

Deprecated: Use Droplets.ProtoReflect.Descriptor instead.

func (*Droplets) FindByHostname added in v0.2.23

func (x *Droplets) FindByHostname(s string) *Droplet

lookup a Droplets by the Hostname

func (*Droplets) FindByUuid added in v0.2.23

func (x *Droplets) FindByUuid(s string) *Droplet

lookup a Droplets by the Uuid

func (*Droplets) FormatJSON added in v0.2.23

func (v *Droplets) FormatJSON() string

human readable JSON

func (*Droplets) FormatTEXT added in v0.2.23

func (v *Droplets) FormatTEXT() string

apparently this isn't stable, but it's awesomely better https://protobuf.dev/reference/go/faq/#unstable-text it's brilliant for config files!

func (*Droplets) GetDroplets added in v0.2.23

func (x *Droplets) GetDroplets() []*Droplet

func (*Droplets) GetFilename added in v0.2.52

func (x *Droplets) GetFilename() string

func (*Droplets) GetUuid added in v0.2.23

func (x *Droplets) GetUuid() string

func (*Droplets) GetVersion added in v0.2.23

func (x *Droplets) GetVersion() string

func (*Droplets) InsertByHostname added in v0.2.29

func (x *Droplets) InsertByHostname(y string) *Droplet

returns a Droplet if Hostname matches, otherwise create

func (*Droplets) InsertByUuid added in v0.2.29

func (x *Droplets) InsertByUuid(y string) *Droplet

returns a Droplet if Uuid matches, otherwise create

func (*Droplets) IterAll added in v0.2.32

func (x *Droplets) IterAll() iter.Seq[*Droplet]

Iterate 'for x := range' syntax using the awesome golang 1.24 'iter'

func (*Droplets) Len added in v0.2.23

func (x *Droplets) Len() int

func (*Droplets) Load added in v0.2.52

func (pb *Droplets) Load() error

func (*Droplets) Marshal added in v0.2.23

func (v *Droplets) Marshal() ([]byte, error)

marshal to wire. This is called winning.

func (*Droplets) MarshalJSON added in v0.2.23

func (v *Droplets) MarshalJSON() ([]byte, error)

marshal json

func (*Droplets) NewTable added in v0.2.23

func (x *Droplets) NewTable(title string) *DropletsTable

func (*Droplets) ProtoMessage added in v0.2.23

func (*Droplets) ProtoMessage()

func (*Droplets) ProtoReflect added in v0.2.23

func (x *Droplets) ProtoReflect() protoreflect.Message

func (*Droplets) Reset added in v0.2.23

func (x *Droplets) Reset()

func (*Droplets) Save added in v0.2.52

func (pb *Droplets) Save() error

func (*Droplets) String added in v0.2.23

func (x *Droplets) String() string

func (*Droplets) Unmarshal added in v0.2.23

func (v *Droplets) Unmarshal(data []byte) error

unmarshal from wire. You have won.

func (*Droplets) UnmarshalJSON added in v0.2.23

func (v *Droplets) UnmarshalJSON(data []byte) error

unmarshal json

func (*Droplets) UnmarshalTEXT added in v0.2.23

func (v *Droplets) UnmarshalTEXT(data []byte) error

unmarshalTEXT. This reads the .text config file back in after the user edits it

type DropletsScanner added in v0.2.34

type DropletsScanner struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*DropletsScanner) Next added in v0.2.34

func (it *DropletsScanner) Next() *Droplets

Next() returns the next thing in the array

func (*DropletsScanner) Scan added in v0.2.34

func (it *DropletsScanner) Scan() bool

type DropletsTable added in v0.2.23

type DropletsTable struct {
	Funcs      []*DropletFunc
	CustomFunc func(*Droplet)
	// contains filtered or unexported fields
}

func (*DropletsTable) AddButtonFunc added in v0.2.29

func (t *DropletsTable) AddButtonFunc(title string, f func(*Droplet) string) *DropletFunc

force the application to choose the type of data. this allows the GUI plugin to be smarter

func (*DropletsTable) AddCpus added in v0.2.23

func (t *DropletsTable) AddCpus() *DropletFunc

func (*DropletsTable) AddCustomXml added in v0.2.23

func (t *DropletsTable) AddCustomXml() *DropletFunc

func (*DropletsTable) AddForceHypervisor added in v0.2.23

func (t *DropletsTable) AddForceHypervisor() *DropletFunc

func (*DropletsTable) AddHostname added in v0.2.23

func (t *DropletsTable) AddHostname() *DropletFunc

func (*DropletsTable) AddIntFunc added in v0.2.23

func (t *DropletsTable) AddIntFunc(title string, f func(*Droplet) int) *DropletFunc

force the application to choose the type of data. this allows the GUI plugin to be smarter

func (*DropletsTable) AddLocalOnly added in v0.2.23

func (t *DropletsTable) AddLocalOnly() *DropletFunc

func (*DropletsTable) AddMemory added in v0.2.23

func (t *DropletsTable) AddMemory() *DropletFunc

func (*DropletsTable) AddPreferredArch added in v0.2.23

func (t *DropletsTable) AddPreferredArch() *DropletFunc

func (*DropletsTable) AddPreferredHypervisor added in v0.2.23

func (t *DropletsTable) AddPreferredHypervisor() *DropletFunc

func (*DropletsTable) AddQemuMachine added in v0.2.23

func (t *DropletsTable) AddQemuMachine() *DropletFunc

func (*DropletsTable) AddSpicePort added in v0.2.23

func (t *DropletsTable) AddSpicePort() *DropletFunc

func (*DropletsTable) AddStringFunc added in v0.2.23

func (t *DropletsTable) AddStringFunc(title string, f func(*Droplet) string) *DropletFunc

force the application to choose the type of data. this allows the GUI plugin to be smarter

func (*DropletsTable) AddTimeFunc added in v0.2.23

func (t *DropletsTable) AddTimeFunc(title string, f func(*Droplet) time.Time) *DropletFunc

force the application to choose the type of data. this allows the GUI plugin to be smarter

func (*DropletsTable) AddUuid added in v0.2.23

func (t *DropletsTable) AddUuid() *DropletFunc

func (*DropletsTable) Custom added in v0.2.29

func (mt *DropletsTable) Custom(f func(*Droplet))

func (*DropletsTable) Delete added in v0.2.29

func (mt *DropletsTable) Delete()

func (*DropletsTable) GetUuid added in v0.2.29

func (mt *DropletsTable) GetUuid() string

func (*DropletsTable) MakeTable added in v0.2.23

func (mt *DropletsTable) MakeTable()

func (*DropletsTable) NewUuid added in v0.2.24

func (mt *DropletsTable) NewUuid()

func (*DropletsTable) PrintTable added in v0.2.49

func (t *DropletsTable) PrintTable()

formats & prints the table as text to Stdout. a real timesaver!

func (*DropletsTable) SetParent added in v0.2.23

func (mt *DropletsTable) SetParent(p *gui.Node)

func (*DropletsTable) ShowTable added in v0.2.23

func (mt *DropletsTable) ShowTable()

type Event added in v0.2.23

type Event struct {
	Id             int32                  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // `autogenpb:unique` // should be unique across the cluster
	Etype          EventType              `protobuf:"varint,2,opt,name=etype,proto3,enum=virtpb.EventType" json:"etype,omitempty"`
	DropletName    string                 `protobuf:"bytes,3,opt,name=dropletName,proto3" json:"dropletName,omitempty"`               // name of the droplet
	DropletUuid    string                 `protobuf:"bytes,4,opt,name=dropletUuid,proto3" json:"dropletUuid,omitempty"`               // uuid of the droplet
	Hypervisor     string                 `protobuf:"bytes,5,opt,name=hypervisor,proto3" json:"hypervisor,omitempty"`                 // name of the hypervisor
	HypervisorUuid string                 `protobuf:"bytes,6,opt,name=hypervisorUuid,proto3" json:"hypervisorUuid,omitempty"`         // uuid of the hypervisor
	Start          *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=start,proto3" json:"start,omitempty"`                           // start time
	End            *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=end,proto3" json:"end,omitempty"`                               // end time
	FieldName      string                 `protobuf:"bytes,9,opt,name=fieldName,proto3" json:"fieldName,omitempty"`                   // the field name that changed
	OrigVal        string                 `protobuf:"bytes,10,opt,name=origVal,proto3" json:"origVal,omitempty"`                      // original value
	NewVal         string                 `protobuf:"bytes,11,opt,name=newVal,proto3" json:"newVal,omitempty"`                        // new value
	OrigAny        *anypb.Any             `protobuf:"bytes,12,opt,name=origAny,proto3" json:"origAny,omitempty"`                      // anypb format. probably overkill
	NewAny         *anypb.Any             `protobuf:"bytes,13,opt,name=newAny,proto3" json:"newAny,omitempty"`                        // anypb format
	Error          string                 `protobuf:"bytes,14,opt,name=error,proto3" json:"error,omitempty"`                          // what went wrong
	State          EventStatus            `protobuf:"varint,15,opt,name=state,proto3,enum=virtpb.EventStatus" json:"state,omitempty"` // state of the event
	Droplet        *Droplet               `protobuf:"bytes,16,opt,name=droplet,proto3" json:"droplet,omitempty"`                      // droplet
	// contains filtered or unexported fields
}

this information leans towards being human readable not programatic in other words, it's better to just have the droplet name here rather than the uuid at least for now in the early days. but maybe forever. homelab clouds normally don't have many events. we are talking less than 1 a minute. even 1 an hour is often a lot

func NewAddEvent added in v0.2.23

func NewAddEvent(a any, fname string, newval any) *Event

work in progress

func (*Event) Descriptor deprecated added in v0.2.23

func (*Event) Descriptor() ([]byte, []int)

Deprecated: Use Event.ProtoReflect.Descriptor instead.

func (*Event) FormatJSON added in v0.2.36

func (v *Event) FormatJSON() string

human readable JSON

func (*Event) FormatTEXT added in v0.2.36

func (v *Event) FormatTEXT() string

apparently this isn't stable, but it's awesomely better https://protobuf.dev/reference/go/faq/#unstable-text it's brilliant for config files!

func (*Event) GetDroplet added in v0.2.23

func (x *Event) GetDroplet() *Droplet

func (*Event) GetDropletName added in v0.2.37

func (x *Event) GetDropletName() string

func (*Event) GetDropletUuid added in v0.2.23

func (x *Event) GetDropletUuid() string

func (*Event) GetEnd added in v0.2.23

func (x *Event) GetEnd() *timestamppb.Timestamp

func (*Event) GetError added in v0.2.36

func (x *Event) GetError() string

func (*Event) GetEtype added in v0.2.23

func (x *Event) GetEtype() EventType

func (*Event) GetFieldName added in v0.2.23

func (x *Event) GetFieldName() string

func (*Event) GetHypervisor added in v0.2.23

func (x *Event) GetHypervisor() string

func (*Event) GetHypervisorUuid added in v0.2.23

func (x *Event) GetHypervisorUuid() string

func (*Event) GetId added in v0.2.23

func (x *Event) GetId() int32

func (*Event) GetNewAny added in v0.2.23

func (x *Event) GetNewAny() *anypb.Any

func (*Event) GetNewVal added in v0.2.23

func (x *Event) GetNewVal() string

func (*Event) GetOrigAny added in v0.2.23

func (x *Event) GetOrigAny() *anypb.Any

func (*Event) GetOrigVal added in v0.2.23

func (x *Event) GetOrigVal() string

func (*Event) GetStart added in v0.2.23

func (x *Event) GetStart() *timestamppb.Timestamp

func (*Event) GetState added in v0.2.36

func (x *Event) GetState() EventStatus

func (*Event) Marshal added in v0.2.36

func (v *Event) Marshal() ([]byte, error)

marshal to wire. This is called winning.

func (*Event) MarshalJSON added in v0.2.36

func (v *Event) MarshalJSON() ([]byte, error)

marshal json

func (*Event) ProtoMessage added in v0.2.23

func (*Event) ProtoMessage()

func (*Event) ProtoReflect added in v0.2.23

func (x *Event) ProtoReflect() protoreflect.Message

func (*Event) Reset added in v0.2.23

func (x *Event) Reset()

func (*Event) String added in v0.2.23

func (x *Event) String() string

func (*Event) Unmarshal added in v0.2.36

func (v *Event) Unmarshal(data []byte) error

unmarshal from wire. You have won.

func (*Event) UnmarshalJSON added in v0.2.36

func (v *Event) UnmarshalJSON(data []byte) error

unmarshal json

func (*Event) UnmarshalTEXT added in v0.2.36

func (v *Event) UnmarshalTEXT(data []byte) error

unmarshalTEXT. This reads the .text config file back in after the user edits it

type EventFunc added in v0.2.52

type EventFunc struct {
	Custom func(*Event)
	Width  int
	Attr   *guipb.ColAttr
	Header *guipb.Widget
	// contains filtered or unexported fields
}

func (*EventFunc) SetTitle added in v0.2.52

func (sf *EventFunc) SetTitle(title string)

type EventScanner added in v0.2.34

type EventScanner struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*EventScanner) Next added in v0.2.34

func (it *EventScanner) Next() *Event

Next() returns the next thing in the array

func (*EventScanner) Scan added in v0.2.34

func (it *EventScanner) Scan() bool

type EventStatus added in v0.2.36

type EventStatus int32
const (
	Event_DONE    EventStatus = 0
	Event_FAIL    EventStatus = 1
	Event_RUNNING EventStatus = 2
)

func (EventStatus) Descriptor added in v0.2.36

func (EventStatus) Enum added in v0.2.36

func (x EventStatus) Enum() *EventStatus

func (EventStatus) EnumDescriptor deprecated added in v0.2.36

func (EventStatus) EnumDescriptor() ([]byte, []int)

Deprecated: Use EventStatus.Descriptor instead.

func (EventStatus) Number added in v0.2.36

func (x EventStatus) Number() protoreflect.EnumNumber

func (EventStatus) String added in v0.2.36

func (x EventStatus) String() string

func (EventStatus) Type added in v0.2.36

type EventType added in v0.2.23

type EventType int32
const (
	EventType_ADD       EventType = 0
	EventType_DELETE    EventType = 1
	EventType_POWERON   EventType = 2
	EventType_POWEROFF  EventType = 3 // should indicate a "normal" shutdown
	EventType_HIBERNATE EventType = 4
	EventType_MIGRATE   EventType = 5
	EventType_DEMO      EventType = 6
	EventType_GET       EventType = 7  // request something
	EventType_LOGIN     EventType = 8  // attempt to login
	EventType_OK        EventType = 9  // everything is ok
	EventType_FAIL      EventType = 10 // everything failed
	EventType_CRASH     EventType = 11 // droplet hard crashed
	EventType_CHANGE    EventType = 12 // droplet or hypervisor config change
	EventType_EDIT      EventType = 13 // edit droplet settings
)

func (EventType) Descriptor added in v0.2.23

func (EventType) Descriptor() protoreflect.EnumDescriptor

func (EventType) Enum added in v0.2.23

func (x EventType) Enum() *EventType

func (EventType) EnumDescriptor deprecated added in v0.2.23

func (EventType) EnumDescriptor() ([]byte, []int)

Deprecated: Use EventType.Descriptor instead.

func (EventType) Number added in v0.2.23

func (x EventType) Number() protoreflect.EnumNumber

func (EventType) String added in v0.2.23

func (x EventType) String() string

func (EventType) Type added in v0.2.23

type Events added in v0.2.23

type Events struct {
	Uuid      string   `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"`            // `autogenpb:uuid:1e3a50c7-5916-4423-b33c-f0b977a7e446`
	Version   string   `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`      // `autogenpb:version:v0.0.1`
	Events    []*Event `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"`        // all the events
	Filename  string   `protobuf:"bytes,4,opt,name=filename,proto3" json:"filename,omitempty"`    // `autogenpb:save` -- this enables autogenerated pb.Load() and pb.Save()
	EventSize int64    `protobuf:"varint,5,opt,name=eventSize,proto3" json:"eventSize,omitempty"` // max events to store in a single
	// contains filtered or unexported fields
}

func CreateSampleEvents added in v0.2.23

func CreateSampleEvents(total int) *Events

func NewEvents added in v0.2.23

func NewEvents() *Events

func (*Events) All added in v0.2.23

func (x *Events) All() *EventScanner

func (*Events) Append added in v0.2.23

func (x *Events) Append(y *Event)

a Append() shortcut (that does Clone() with a mutex) notsure if it really works doesn't allow nil

func (*Events) AppendEvent added in v0.2.23

func (epb *Events) AppendEvent(e *Event)

func (*Events) Clone added in v0.2.57

func (x *Events) Clone(y *Event) *Event

a Clone() shortcut (with a mutex). notsure if it really works

func (*Events) Delete added in v0.2.23

func (x *Events) Delete(y *Event) bool

func (*Events) Descriptor deprecated added in v0.2.23

func (*Events) Descriptor() ([]byte, []int)

Deprecated: Use Events.ProtoReflect.Descriptor instead.

func (*Events) FormatJSON added in v0.2.23

func (v *Events) FormatJSON() string

human readable JSON

func (*Events) FormatTEXT added in v0.2.23

func (v *Events) FormatTEXT() string

apparently this isn't stable, but it's awesomely better https://protobuf.dev/reference/go/faq/#unstable-text it's brilliant for config files!

func (*Events) GetEventSize added in v0.2.23

func (x *Events) GetEventSize() int64

func (*Events) GetEvents added in v0.2.23

func (x *Events) GetEvents() []*Event

func (*Events) GetFilename added in v0.2.52

func (x *Events) GetFilename() string

func (*Events) GetUuid added in v0.2.23

func (x *Events) GetUuid() string

func (*Events) GetVersion added in v0.2.23

func (x *Events) GetVersion() string

func (*Events) IterAll added in v0.2.32

func (x *Events) IterAll() iter.Seq[*Event]

Iterate 'for x := range' syntax using the awesome golang 1.24 'iter'

func (*Events) Len added in v0.2.23

func (x *Events) Len() int

func (*Events) Load added in v0.2.52

func (pb *Events) Load() error

func (*Events) Marshal added in v0.2.23

func (v *Events) Marshal() ([]byte, error)

marshal to wire. This is called winning.

func (*Events) MarshalJSON added in v0.2.23

func (v *Events) MarshalJSON() ([]byte, error)

marshal json

func (*Events) NewTable added in v0.2.23

func (x *Events) NewTable(title string) *EventsTable

func (*Events) ProtoMessage added in v0.2.23

func (*Events) ProtoMessage()

func (*Events) ProtoReflect added in v0.2.23

func (x *Events) ProtoReflect() protoreflect.Message

func (*Events) Reset added in v0.2.23

func (x *Events) Reset()

func (*Events) Save added in v0.2.52

func (pb *Events) Save() error

func (*Events) String added in v0.2.23

func (x *Events) String() string

func (*Events) Unmarshal added in v0.2.23

func (v *Events) Unmarshal(data []byte) error

unmarshal from wire. You have won.

func (*Events) UnmarshalJSON added in v0.2.23

func (v *Events) UnmarshalJSON(data []byte) error

unmarshal json

func (*Events) UnmarshalTEXT added in v0.2.23

func (v *Events) UnmarshalTEXT(data []byte) error

unmarshalTEXT. This reads the .text config file back in after the user edits it

type EventsScanner added in v0.2.34

type EventsScanner struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*EventsScanner) Next added in v0.2.34

func (it *EventsScanner) Next() *Events

Next() returns the next thing in the array

func (*EventsScanner) Scan added in v0.2.34

func (it *EventsScanner) Scan() bool

type EventsTable added in v0.2.23

type EventsTable struct {
	Funcs      []*EventFunc
	CustomFunc func(*Event)
	// contains filtered or unexported fields
}

func (*EventsTable) AddButtonFunc added in v0.2.29

func (t *EventsTable) AddButtonFunc(title string, f func(*Event) string) *EventFunc

force the application to choose the type of data. this allows the GUI plugin to be smarter

func (*EventsTable) AddDropletName added in v0.2.37

func (t *EventsTable) AddDropletName() *EventFunc

func (*EventsTable) AddDropletUuid added in v0.2.23

func (t *EventsTable) AddDropletUuid() *EventFunc

func (*EventsTable) AddError added in v0.2.36

func (t *EventsTable) AddError() *EventFunc

func (*EventsTable) AddFieldName added in v0.2.23

func (t *EventsTable) AddFieldName() *EventFunc

func (*EventsTable) AddHypervisor added in v0.2.23

func (t *EventsTable) AddHypervisor() *EventFunc

func (*EventsTable) AddHypervisorUuid added in v0.2.23

func (t *EventsTable) AddHypervisorUuid() *EventFunc

func (*EventsTable) AddIntFunc added in v0.2.23

func (t *EventsTable) AddIntFunc(title string, f func(*Event) int) *EventFunc

force the application to choose the type of data. this allows the GUI plugin to be smarter

func (*EventsTable) AddNewVal added in v0.2.23

func (t *EventsTable) AddNewVal() *EventFunc

func (*EventsTable) AddOrigVal added in v0.2.23

func (t *EventsTable) AddOrigVal() *EventFunc

func (*EventsTable) AddStringFunc added in v0.2.23

func (t *EventsTable) AddStringFunc(title string, f func(*Event) string) *EventFunc

force the application to choose the type of data. this allows the GUI plugin to be smarter

func (*EventsTable) AddTimeFunc added in v0.2.23

func (t *EventsTable) AddTimeFunc(title string, f func(*Event) time.Time) *EventFunc

force the application to choose the type of data. this allows the GUI plugin to be smarter

func (*EventsTable) Custom added in v0.2.29

func (mt *EventsTable) Custom(f func(*Event))

func (*EventsTable) Delete added in v0.2.29

func (mt *EventsTable) Delete()

func (*EventsTable) GetUuid added in v0.2.29

func (mt *EventsTable) GetUuid() string

func (*EventsTable) MakeTable added in v0.2.23

func (mt *EventsTable) MakeTable()

func (*EventsTable) NewUuid added in v0.2.24

func (mt *EventsTable) NewUuid()

func (*EventsTable) PrintTable added in v0.2.49

func (t *EventsTable) PrintTable()

formats & prints the table as text to Stdout. a real timesaver!

func (*EventsTable) SetParent added in v0.2.23

func (mt *EventsTable) SetParent(p *gui.Node)

func (*EventsTable) ShowTable added in v0.2.23

func (mt *EventsTable) ShowTable()

type Hypervisor added in v0.2.23

type Hypervisor struct {
	Uuid      string                 `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"`         // `autogenpb:unique`
	Hostname  string                 `protobuf:"bytes,2,opt,name=hostname,proto3" json:"hostname,omitempty"` // `autogenpb:unique`
	Active    bool                   `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"`    // is allowed to start new droplets
	Cpus      int64                  `protobuf:"varint,4,opt,name=cpus,proto3" json:"cpus,omitempty"`
	Memory    int64                  `protobuf:"varint,5,opt,name=memory,proto3" json:"memory,omitempty"` // in bytes
	Comment   string                 `protobuf:"bytes,6,opt,name=comment,proto3" json:"comment,omitempty"`
	Autoscan  bool                   `protobuf:"varint,7,opt,name=autoscan,proto3" json:"autoscan,omitempty"` // to scan or not to scan by virtigo
	Arch      HypervisorArch         `protobuf:"varint,8,opt,name=arch,proto3,enum=virtpb.HypervisorArch" json:"arch,omitempty"`
	Killcount int64                  `protobuf:"varint,9,opt,name=killcount,proto3" json:"killcount,omitempty"` // in bytes
	LastPoll  *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=lastPoll,proto3" json:"lastPoll,omitempty"`   // the last time we heard anything
	// contains filtered or unexported fields
}

func CreateSampleHypervisor added in v0.2.23

func CreateSampleHypervisor(hostname string, mem int) *Hypervisor

func (*Hypervisor) Descriptor deprecated added in v0.2.23

func (*Hypervisor) Descriptor() ([]byte, []int)

Deprecated: Use Hypervisor.ProtoReflect.Descriptor instead.

func (*Hypervisor) GetActive added in v0.2.23

func (x *Hypervisor) GetActive() bool

func (*Hypervisor) GetArch added in v0.2.23

func (x *Hypervisor) GetArch() HypervisorArch

func (*Hypervisor) GetAutoscan added in v0.2.23

func (x *Hypervisor) GetAutoscan() bool

func (*Hypervisor) GetComment added in v0.2.23

func (x *Hypervisor) GetComment() string

func (*Hypervisor) GetCpus added in v0.2.23

func (x *Hypervisor) GetCpus() int64

func (*Hypervisor) GetHostname added in v0.2.23

func (x *Hypervisor) GetHostname() string

func (*Hypervisor) GetKillcount added in v0.2.24

func (x *Hypervisor) GetKillcount() int64

func (*Hypervisor) GetLastPoll added in v0.2.24

func (x *Hypervisor) GetLastPoll() *timestamppb.Timestamp

func (*Hypervisor) GetMemory added in v0.2.23

func (x *Hypervisor) GetMemory() int64

func (*Hypervisor) GetUuid added in v0.2.23

func (x *Hypervisor) GetUuid() string

func (*Hypervisor) ProtoMessage added in v0.2.23

func (*Hypervisor) ProtoMessage()

func (*Hypervisor) ProtoReflect added in v0.2.23

func (x *Hypervisor) ProtoReflect() protoreflect.Message

func (*Hypervisor) Reset added in v0.2.23

func (x *Hypervisor) Reset()

func (*Hypervisor) SetMemoryGB added in v0.2.23

func (x *Hypervisor) SetMemoryGB(gb int)

func (*Hypervisor) String added in v0.2.23

func (x *Hypervisor) String() string

type HypervisorArch added in v0.2.23

type HypervisorArch int32
const (
	HypervisorArch_RISCV64 HypervisorArch = 0
	HypervisorArch_X86_64  HypervisorArch = 1
	HypervisorArch_ARM64   HypervisorArch = 2
)

func (HypervisorArch) Descriptor added in v0.2.23

func (HypervisorArch) Enum added in v0.2.23

func (x HypervisorArch) Enum() *HypervisorArch

func (HypervisorArch) EnumDescriptor deprecated added in v0.2.23

func (HypervisorArch) EnumDescriptor() ([]byte, []int)

Deprecated: Use HypervisorArch.Descriptor instead.

func (HypervisorArch) Number added in v0.2.23

func (HypervisorArch) String added in v0.2.23

func (x HypervisorArch) String() string

func (HypervisorArch) Type added in v0.2.23

type HypervisorFunc added in v0.2.52

type HypervisorFunc struct {
	Custom func(*Hypervisor)
	Width  int
	Attr   *guipb.ColAttr
	Header *guipb.Widget
	// contains filtered or unexported fields
}

func (*HypervisorFunc) SetTitle added in v0.2.52

func (sf *HypervisorFunc) SetTitle(title string)

type HypervisorScanner added in v0.2.34

type HypervisorScanner struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*HypervisorScanner) Next added in v0.2.34

func (it *HypervisorScanner) Next() *Hypervisor

Next() returns the next thing in the array

func (*HypervisorScanner) Scan added in v0.2.34

func (it *HypervisorScanner) Scan() bool

type Hypervisors added in v0.2.23

type Hypervisors struct {
	Uuid        string        `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"`       // `autogenpb:uuid:6e3aa8b9-cf98-40f6-af58-3c6ad1edf4d4`
	Version     string        `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` // `autogenpb:version:v0.0.1`
	Hypervisors []*Hypervisor `protobuf:"bytes,3,rep,name=hypervisors,proto3" json:"hypervisors,omitempty"`
	Filename    string        `protobuf:"bytes,4,opt,name=filename,proto3" json:"filename,omitempty"` // `autogenpb:save` -- this enables autogenerated pb.Load() and pb.Save()
	// contains filtered or unexported fields
}

func NewHypervisors added in v0.2.23

func NewHypervisors() *Hypervisors

func (*Hypervisors) All added in v0.2.23

func (x *Hypervisors) All() *HypervisorScanner

func (*Hypervisors) Append added in v0.2.23

func (x *Hypervisors) Append(y *Hypervisor)

a Append() shortcut (that does Clone() with a mutex) notsure if it really works doesn't allow nil

func (*Hypervisors) AppendByHostname added in v0.2.23

func (x *Hypervisors) AppendByHostname(y *Hypervisor) bool

func (*Hypervisors) AppendByUuid added in v0.2.23

func (x *Hypervisors) AppendByUuid(y *Hypervisor) bool

func (*Hypervisors) Clone added in v0.2.57

func (x *Hypervisors) Clone(y *Hypervisor) *Hypervisor

a Clone() shortcut (with a mutex). notsure if it really works

func (*Hypervisors) CloneByHostname added in v0.2.57

func (x *Hypervisors) CloneByHostname(y *Hypervisor) bool

func (*Hypervisors) CloneByUuid added in v0.2.57

func (x *Hypervisors) CloneByUuid(y *Hypervisor) bool

func (*Hypervisors) Delete added in v0.2.23

func (x *Hypervisors) Delete(y *Hypervisor) bool

func (*Hypervisors) DeleteByHostname added in v0.2.23

func (x *Hypervisors) DeleteByHostname(s string) bool

func (*Hypervisors) DeleteByUuid added in v0.2.23

func (x *Hypervisors) DeleteByUuid(s string) bool

func (*Hypervisors) Descriptor deprecated added in v0.2.23

func (*Hypervisors) Descriptor() ([]byte, []int)

Deprecated: Use Hypervisors.ProtoReflect.Descriptor instead.

func (*Hypervisors) FindByHostname added in v0.2.23

func (x *Hypervisors) FindByHostname(s string) *Hypervisor

lookup a Hypervisors by the Hostname

func (*Hypervisors) FindByUuid added in v0.2.23

func (x *Hypervisors) FindByUuid(s string) *Hypervisor

lookup a Hypervisors by the Uuid

func (*Hypervisors) FormatJSON added in v0.2.23

func (v *Hypervisors) FormatJSON() string

human readable JSON

func (*Hypervisors) FormatTEXT added in v0.2.23

func (v *Hypervisors) FormatTEXT() string

apparently this isn't stable, but it's awesomely better https://protobuf.dev/reference/go/faq/#unstable-text it's brilliant for config files!

func (*Hypervisors) GetFilename added in v0.2.52

func (x *Hypervisors) GetFilename() string

func (*Hypervisors) GetHypervisors added in v0.2.23

func (x *Hypervisors) GetHypervisors() []*Hypervisor

func (*Hypervisors) GetUuid added in v0.2.23

func (x *Hypervisors) GetUuid() string

func (*Hypervisors) GetVersion added in v0.2.23

func (x *Hypervisors) GetVersion() string

func (*Hypervisors) InsertByHostname added in v0.2.29

func (x *Hypervisors) InsertByHostname(y string) *Hypervisor

returns a Hypervisor if Hostname matches, otherwise create

func (*Hypervisors) InsertByUuid added in v0.2.29

func (x *Hypervisors) InsertByUuid(y string) *Hypervisor

returns a Hypervisor if Uuid matches, otherwise create

func (*Hypervisors) IterAll added in v0.2.32

func (x *Hypervisors) IterAll() iter.Seq[*Hypervisor]

Iterate 'for x := range' syntax using the awesome golang 1.24 'iter'

func (*Hypervisors) Len added in v0.2.23

func (x *Hypervisors) Len() int

func (*Hypervisors) Load added in v0.2.52

func (pb *Hypervisors) Load() error

func (*Hypervisors) Marshal added in v0.2.23

func (v *Hypervisors) Marshal() ([]byte, error)

marshal to wire. This is called winning.

func (*Hypervisors) MarshalJSON added in v0.2.23

func (v *Hypervisors) MarshalJSON() ([]byte, error)

marshal json

func (*Hypervisors) NewTable added in v0.2.23

func (x *Hypervisors) NewTable(title string) *HypervisorsTable

func (*Hypervisors) ProtoMessage added in v0.2.23

func (*Hypervisors) ProtoMessage()

func (*Hypervisors) ProtoReflect added in v0.2.23

func (x *Hypervisors) ProtoReflect() protoreflect.Message

func (*Hypervisors) Reset added in v0.2.23

func (x *Hypervisors) Reset()

func (*Hypervisors) Save added in v0.2.52

func (pb *Hypervisors) Save() error

func (*Hypervisors) String added in v0.2.23

func (x *Hypervisors) String() string

func (*Hypervisors) Unmarshal added in v0.2.23

func (v *Hypervisors) Unmarshal(data []byte) error

unmarshal from wire. You have won.

func (*Hypervisors) UnmarshalJSON added in v0.2.23

func (v *Hypervisors) UnmarshalJSON(data []byte) error

unmarshal json

func (*Hypervisors) UnmarshalTEXT added in v0.2.23

func (v *Hypervisors) UnmarshalTEXT(data []byte) error

unmarshalTEXT. This reads the .text config file back in after the user edits it

type HypervisorsScanner added in v0.2.34

type HypervisorsScanner struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*HypervisorsScanner) Next added in v0.2.34

func (it *HypervisorsScanner) Next() *Hypervisors

Next() returns the next thing in the array

func (*HypervisorsScanner) Scan added in v0.2.34

func (it *HypervisorsScanner) Scan() bool

type HypervisorsTable added in v0.2.23

type HypervisorsTable struct {
	Funcs      []*HypervisorFunc
	CustomFunc func(*Hypervisor)
	// contains filtered or unexported fields
}

func (*HypervisorsTable) AddButtonFunc added in v0.2.29

func (t *HypervisorsTable) AddButtonFunc(title string, f func(*Hypervisor) string) *HypervisorFunc

force the application to choose the type of data. this allows the GUI plugin to be smarter

func (*HypervisorsTable) AddComment added in v0.2.23

func (t *HypervisorsTable) AddComment() *HypervisorFunc

func (*HypervisorsTable) AddCpus added in v0.2.23

func (t *HypervisorsTable) AddCpus() *HypervisorFunc

func (*HypervisorsTable) AddHostname added in v0.2.23

func (t *HypervisorsTable) AddHostname() *HypervisorFunc

func (*HypervisorsTable) AddIntFunc added in v0.2.23

func (t *HypervisorsTable) AddIntFunc(title string, f func(*Hypervisor) int) *HypervisorFunc

force the application to choose the type of data. this allows the GUI plugin to be smarter

func (*HypervisorsTable) AddKillcount added in v0.2.24

func (t *HypervisorsTable) AddKillcount() *HypervisorFunc

func (*HypervisorsTable) AddMemory added in v0.2.23

func (t *HypervisorsTable) AddMemory() *HypervisorFunc

func (*HypervisorsTable) AddStringFunc added in v0.2.23

func (t *HypervisorsTable) AddStringFunc(title string, f func(*Hypervisor) string) *HypervisorFunc

force the application to choose the type of data. this allows the GUI plugin to be smarter

func (*HypervisorsTable) AddTimeFunc added in v0.2.23

func (t *HypervisorsTable) AddTimeFunc(title string, f func(*Hypervisor) time.Time) *HypervisorFunc

force the application to choose the type of data. this allows the GUI plugin to be smarter

func (*HypervisorsTable) AddUuid added in v0.2.23

func (t *HypervisorsTable) AddUuid() *HypervisorFunc

func (*HypervisorsTable) Custom added in v0.2.29

func (mt *HypervisorsTable) Custom(f func(*Hypervisor))

func (*HypervisorsTable) Delete added in v0.2.29

func (mt *HypervisorsTable) Delete()

func (*HypervisorsTable) GetUuid added in v0.2.29

func (mt *HypervisorsTable) GetUuid() string

func (*HypervisorsTable) MakeTable added in v0.2.23

func (mt *HypervisorsTable) MakeTable()

func (*HypervisorsTable) NewUuid added in v0.2.24

func (mt *HypervisorsTable) NewUuid()

func (*HypervisorsTable) PrintTable added in v0.2.49

func (t *HypervisorsTable) PrintTable()

formats & prints the table as text to Stdout. a real timesaver!

func (*HypervisorsTable) SetParent added in v0.2.23

func (mt *HypervisorsTable) SetParent(p *gui.Node)

func (*HypervisorsTable) ShowTable added in v0.2.23

func (mt *HypervisorsTable) ShowTable()

type Network added in v0.2.23

type Network struct {
	Mac  string `protobuf:"bytes,1,opt,name=mac,proto3" json:"mac,omitempty"`
	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	// contains filtered or unexported fields
}

func (*Network) Descriptor deprecated added in v0.2.23

func (*Network) Descriptor() ([]byte, []int)

Deprecated: Use Network.ProtoReflect.Descriptor instead.

func (*Network) GetMac added in v0.2.23

func (x *Network) GetMac() string

func (*Network) GetName added in v0.2.23

func (x *Network) GetName() string

func (*Network) ProtoMessage added in v0.2.23

func (*Network) ProtoMessage()

func (*Network) ProtoReflect added in v0.2.23

func (x *Network) ProtoReflect() protoreflect.Message

func (*Network) Reset added in v0.2.23

func (x *Network) Reset()

func (*Network) String added in v0.2.23

func (x *Network) String() string

type NetworkScanner added in v0.2.34

type NetworkScanner struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*NetworkScanner) Next added in v0.2.34

func (it *NetworkScanner) Next() *Network

Next() returns the next thing in the array

func (*NetworkScanner) Scan added in v0.2.34

func (it *NetworkScanner) Scan() bool

type OldCluster added in v0.2.33

type OldCluster struct {
	sync.RWMutex

	Dirs []string

	H *Hypervisors

	Unstable        *timestamppb.Timestamp
	UnstableTimeout *durationpb.Duration
	// contains filtered or unexported fields
}

func CreateSampleCluster added in v0.2.1

func CreateSampleCluster(total int) *OldCluster

func InitCluster added in v0.2.1

func InitCluster() *OldCluster

func (*OldCluster) AddDroplet added in v0.2.33

func (c *OldCluster) AddDroplet(newd *Droplet) bool

adds a new droplet. enforce unique hostnames

func (*OldCluster) AddDropletLocal added in v0.2.33

func (c *OldCluster) AddDropletLocal(name string, hypername string) *Droplet

This isn't for the marketing department

func (*OldCluster) AddDropletSimple added in v0.2.33

func (c *OldCluster) AddDropletSimple(uuid string, hostname string, cpus int, mem int) *Droplet

func (*OldCluster) AddEvent added in v0.2.33

func (c *OldCluster) AddEvent(e *Event)

func (*OldCluster) AddHypervisor added in v0.2.33

func (c *OldCluster) AddHypervisor(hostname string, cpus int, mem int) *Hypervisor

func (*OldCluster) BlankFields added in v0.2.33

func (c *OldCluster) BlankFields()

func (*OldCluster) ChangeDropletState added in v0.2.33

func (c *OldCluster) ChangeDropletState(d *Droplet, newState DropletState) error

records an event that the droplet changed state (aka turned on, turned off, etc)

func (*OldCluster) ClusterStable added in v0.2.33

func (c *OldCluster) ClusterStable() (bool, string)

func (*OldCluster) ConfigLoad added in v0.2.33

func (c *OldCluster) ConfigLoad() error

func (*OldCluster) ConfigSave added in v0.2.33

func (c *OldCluster) ConfigSave() error

writes out the cluster information it seperate files to make it humanly possible to hand edit things as needed

func (*OldCluster) DropletMoved added in v0.2.33

func (c *OldCluster) DropletMoved(d *Droplet, newh *Hypervisor) error

records an event that the droplet migrated to another hypervisor

func (*OldCluster) DropletReady added in v0.2.33

func (c *OldCluster) DropletReady(d *Droplet) (bool, string)

check the cluster and droplet to make sure it's ready to start

func (*OldCluster) DropletsAll added in v0.2.33

func (c *OldCluster) DropletsAll() *DropletScanner

func (*OldCluster) DumpDroplet added in v0.2.33

func (c *OldCluster) DumpDroplet(w http.ResponseWriter, r *http.Request) (string, error)

func (*OldCluster) FindDropletByName added in v0.2.33

func (c *OldCluster) FindDropletByName(name string) *Droplet

func (*OldCluster) FindDropletByUuid added in v0.2.36

func (c *OldCluster) FindDropletByUuid(id string) *Droplet

func (*OldCluster) FindHypervisorByName added in v0.2.33

func (c *OldCluster) FindHypervisorByName(name string) *Hypervisor

func (*OldCluster) GetDropletsPB added in v0.2.33

func (c *OldCluster) GetDropletsPB() *Droplets

func (*OldCluster) GetEventsPB added in v0.2.33

func (c *OldCluster) GetEventsPB() *Events

func (*OldCluster) GetHypervisorsPB added in v0.2.33

func (c *OldCluster) GetHypervisorsPB() *Hypervisors

Jump to

Keyboard shortcuts

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