vm

package
v0.0.5-dev.1 Latest Latest
Warning

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

Go to latest
Published: Mar 10, 2023 License: MIT Imports: 5 Imported by: 4

Documentation

Index

Constants

This section is empty.

Variables

Functions

This section is empty.

Types

type Credientials

type Credientials struct {
	AdminUser     string
	AdminPassword string
	SSHKey        string
}

type VDIController

type VDIController interface {
}

type VMController

type VMController interface {
	ListAll(ctx context.Context) ([]*VirtualMachineStatus, error)
	ListWithTag(ctx context.Context, tag string) ([]*VirtualMachineStatus, error)
	Status(ctx context.Context, vmName string) (*VirtualMachineStatus, error)
	SetState(ctx context.Context, state VirtualMachineAction, vmName string, wait bool) (*VirtualMachineStatus, error)
	Start(ctx context.Context, vmName string, wait bool) error
	Stop(ctx context.Context, vmName string, wait bool) error
	Terminate(ctx context.Context, vmName string, wait bool) error
	Create(ctx context.Context, vm *VirtualMachineConfiguration) (*VirtualMachineConfiguration, error)
	Delete(ctx context.Context, vm *VirtualMachineConfiguration) (*VirtualMachineConfiguration, error)
	GetLimits(ctx context.Context) ([]*VirtualMachineLimit, error)
	GetVMSizes(ctx context.Context) (map[string]*VmSize, error)
}

type VMSizeCollection

type VMSizeCollection []*VmSize

func (VMSizeCollection) Len

func (coll VMSizeCollection) Len() int

func (VMSizeCollection) Less

func (coll VMSizeCollection) Less(i, j int) bool

func (VMSizeCollection) Swap

func (coll VMSizeCollection) Swap(i, j int)

type VirtualMachineAction

type VirtualMachineAction string
const (
	VirtualMachineStart     VirtualMachineAction = "start"
	VirtualMachineStop      VirtualMachineAction = "stop"
	VirtualMachineTerminate VirtualMachineAction = "terminate"
)

type VirtualMachineConfiguration

type VirtualMachineConfiguration struct {
	ID                    string            `json:"id,omitempty"`
	LongID                string            `json:"longId,omitempty"`
	Name                  string            `json:"name,omitempty"`
	Tags                  map[string]string `json:"tags,omitempty"`
	Size                  *VmSize           `json:"size,omitempty"`
	SizeRequest           *VmSizeRequest
	OSType                string
	OSDisk                *VirtualMachineDisk
	Disks                 []*VirtualMachineDisk
	Image                 string
	ImageVersion          string
	PrimaryNetwork        *VirtualMachineNetwork
	Networks              []*VirtualMachineNetwork
	DomainControllers     []*string
	Credientials          Credientials
	StartUpCommand        string
	CloudProviderSettings interface{} // Custom settings for this cloud provider
}

type VirtualMachineDisk

type VirtualMachineDisk struct {
	Name string
	Size string
}

type VirtualMachineLimit

type VirtualMachineLimit struct {
	Name    string
	Current int
	Limit   int
}

func FindLimit

func FindLimit(ctx context.Context, limits []*VirtualMachineLimit, size string) *VirtualMachineLimit

type VirtualMachineNetwork

type VirtualMachineNetwork struct {
	ID        string
	Name      string
	PrivateIP string
	PublicIP  string
}

type VirtualMachineStatus

type VirtualMachineStatus struct {
	ID                string             `json:"id,omitempty"`
	LongID            string             `json:"longId,omitempty"`
	Name              string             `json:"name,omitempty"`
	Tags              map[string]*string `json:"tags,omitempty"`
	User              string             `json:"user,omitempty"`
	Size              string             `json:"size,omitempty"`
	PowerState        string             `json:"powerState,omitempty"`
	ProvisioningState string             `json:"provisioningState,omitempty"`
	ProvisioningTime  time.Time          `json:"provisioningTime,omitempty"`
	OperatingSystem   string             `json:"operatingSystem,omitempty"`
}

type VmSize

type VmSize struct {
	Vendor                string  // Clolud vendor, azure, aws, gcp, etc
	Name                  string  // name of the size
	Family                string  // Family of the size
	Size                  string  // Size ID that the vendor recoknizes
	MaxNics               int     // Max Network Interfaces
	AcceleratedNetworking bool    // Supports Accelerated Networking
	VCPU                  int     // Virtual CPUs
	PremiumIO             bool    // Supports Premium SSD / IO
	MemoryGB              float64 // Memory assigned in GB
	GpuVendor             string  // Vendor for the GPU, expect <blank>, "nvidia", "amd", "random"
	GPU                   float64 // Number of virtual GPIs
	Enabled               bool    // If the Size is enabled
	Notes                 string  // Any admin level notes
	CpuVendor             string  // Vendor of the CPU, "intel", "amd"
	CpuGeneration         string  // Generation of the CPU "Ivy Bridge", etc.
	Cost                  float64 // Cost per hour
	QuotaAvailable        int64   // Number of CPUs that are available
}

func FindBestVmSize

func FindBestVmSize(sizeRequest *VmSizeRequest, availableSizes []*VmSize) *VmSize

func FindBestVmSizes

func FindBestVmSizes(sizeRequest *VmSizeRequest, availableSizes []*VmSize) []*VmSize

type VmSizeRequest

type VmSizeRequest struct {
	// accelerated networking
	AcceleratedNetworking bool `json:"AcceleratedNetworking,omitempty"`

	// CPU generation
	CPUGeneration string `json:"CPUGeneration,omitempty"`

	// CPU vendor
	CPUVendor string `json:"CPUVendor,omitempty"`

	// g p u vendor
	GPUVendor string `json:"GPUVendor,omitempty"`

	// max CPU
	MaxCPU float64 `json:"MaxCPU,omitempty"`

	// max g p u
	MaxGPU float64 `json:"MaxGPU,omitempty"`

	// max memory
	MaxMemory float64 `json:"MaxMemory,omitempty"`

	// min CPU
	MinCPU float64 `json:"MinCPU,omitempty"`

	// min g p u
	MinGPU float64 `json:"MinGPU,omitempty"`

	// min memory
	MinMemory float64 `json:"MinMemory,omitempty"`

	// name
	Name string `json:"Name,omitempty"`

	// premium i o
	PremiumIO bool `json:"PremiumIO,omitempty"`

	// specific size
	SpecificSize string `json:"SpecificSize,omitempty"`

	// vendor
	Vendor string `json:"Vendor,omitempty"`
}

func (*VmSizeRequest) Matches

func (req *VmSizeRequest) Matches(size *VmSize) bool

Jump to

Keyboard shortcuts

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