Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var VmControllers = cloudy.NewProviderRegistry[VMController]()
Functions ¶
This section is empty.
Types ¶
type Credientials ¶
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 VirtualMachineLimit ¶
func FindLimit ¶
func FindLimit(ctx context.Context, limits []*VirtualMachineLimit, size string) *VirtualMachineLimit
type VirtualMachineNetwork ¶
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
Click to show internal directories.
Click to hide internal directories.