Documentation
¶
Overview ¶
Package vmx implements driver
Index ¶
- type Config
- type Driver
- func (d *Driver) Allocate(def types.LabelDefinition, _ map[string]any) (*types.ApplicationResource, error)
- func (d *Driver) AvailableCapacity(nodeUsage types.Resources, req types.LabelDefinition) int64
- func (d *Driver) Deallocate(res *types.ApplicationResource) error
- func (d *Driver) GetTask(name, options string) drivers.ResourceDriverTask
- func (*Driver) IsRemote() bool
- func (*Driver) Name() string
- func (d *Driver) Prepare(config []byte) error
- func (d *Driver) Status(res *types.ApplicationResource) (string, error)
- func (*Driver) ValidateDefinition(def types.LabelDefinition) error
- type Factory
- type Options
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
VmrunPath string `json:"vmrun_path"` // '/Applications/VMware Fusion.app/Contents/Library/vmrun'
VdiskmanagerPath string `json:"vdiskmanager_path"` // '/Applications/VMware Fusion.app/Contents/Library/vmware-vdiskmanager'
ImagesPath string `json:"images_path"` // Where to look/store VM images
WorkspacePath string `json:"workspace_path"` // Where to place the cloned VM and disks
// Alter allows you to control how much resources will be used:
// * Negative (<0) value will alter the total resource count before provisioning so you will be
// able to save some resources for the host system (recommended -2 for CPU and -10 for RAM
// for disk caching)
// * Positive (>0) value could also be available (but check it in your vmware dist in advance)
// Please be careful here - noone wants the VM to fail allocation because of that...
CPUAlter int `json:"cpu_alter"` // 0 do nothing, <0 reduces number available CPUs, >0 increases it (dangerous)
RAMAlter int `json:"ram_alter"` // 0 do nothing, <0 reduces amount of available RAM (GB), >0 increases it (dangerous)
// Overbook options allows tenants to reuse the resources
// It will be used only when overbook is allowed by the tenants. It works by just adding those
// amounts to the existing total before checking availability. For example if you have 16CPU
// and want to run 2 tenants with requirement of 14 CPUs each - you can put 12 in CPUOverbook -
// to have virtually 28 CPUs. 3rd will not be running because 2 tenants will eat all 28 virtual
// CPUs. Same applies to the RamOverbook.
CPUOverbook uint `json:"cpu_overbook"` // How much CPUs could be reused by multiple tenants
RAMOverbook uint `json:"ram_overbook"` // How much RAM (GB) could be reused by multiple tenants
DownloadUser string `json:"download_user"` // The user will be used in download operations
DownloadPassword string `json:"download_password"` // The password will be used in download operations
LogMonitor bool `json:"log_monitor"` // Actively monitor the vmware.log of VM and reset it on halt
}
Config - node driver configuration
type Driver ¶
type Driver struct {
// contains filtered or unexported fields
}
Driver implements drivers.ResourceDriver interface
func (*Driver) Allocate ¶
func (d *Driver) Allocate(def types.LabelDefinition, _ map[string]any) (*types.ApplicationResource, error)
Allocate VM with provided images
It automatically download the required images, unpack them and runs the VM. Not using metadata because there is no good interfaces to pass it to VM.
func (*Driver) AvailableCapacity ¶ added in v0.6.0
AvailableCapacity allows Fish to ask the driver about it's capacity (free slots) of a specific definition
func (*Driver) Deallocate ¶
func (d *Driver) Deallocate(res *types.ApplicationResource) error
Deallocate the resource
func (*Driver) GetTask ¶ added in v0.6.0
func (d *Driver) GetTask(name, options string) drivers.ResourceDriverTask
GetTask returns task struct by name
func (*Driver) IsRemote ¶ added in v0.6.0
IsRemote needed to detect the out-of-node resources managed by this driver
func (*Driver) Status ¶
func (d *Driver) Status(res *types.ApplicationResource) (string, error)
Status shows status of the resource
func (*Driver) ValidateDefinition ¶
func (*Driver) ValidateDefinition(def types.LabelDefinition) error
ValidateDefinition checks LabelDefinition is ok
type Factory ¶ added in v0.7.3
type Factory struct{}
Factory implements drivers.ResourceDriverFactory interface
func (*Factory) NewResourceDriver ¶ added in v0.7.3
func (*Factory) NewResourceDriver() drivers.ResourceDriver
NewResourceDriver creates new resource driver
type Options ¶ added in v0.6.0
type Options struct {
Images []drivers.Image `json:"images"` // List of image dependencies, last one is running one
}
Options for label definition
Example:
images:
- url: https://artifact-storage/aquarium/image/vmx/macos1015-VERSION/macos1015-VERSION.tar.xz
sum: sha256:1234567890abcdef1234567890abcdef1
- url: https://artifact-storage/aquarium/image/vmx/macos1015-xcode122-VERSION/macos1015-xcode122-VERSION.tar.xz
sum: sha256:1234567890abcdef1234567890abcdef2
- url: https://artifact-storage/aquarium/image/vmx/macos1015-xcode122-ci-VERSION/macos1015-xcode122-ci-VERSION.tar.xz
sum: sha256:1234567890abcdef1234567890abcdef3