vm

package
v0.0.0-...-f4dd720 Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2024 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	KVMCPUOpts = `KVM_CPU_OPTS=-cpu %s
                      -smp sockets=%v,cpus=%v,cores=%v,threads=%v,maxcpus=%v
                      -m %d`
	CloudInitOpts = `CLOUD_INIT_OPTS=-drive
                         file=/data/seed.iso,if=virtio,format=raw`
)

Qemu Command Parameters

View Source
const (
	ImageMount    = "%v:/image/image"
	DataMount     = "%v:/data"
	MetadataMount = "%v/%v:/cloud-init/openstack/latest/meta_data.json"
	MedatataFile  = "meta_data.json"
	UserDataMount = "%s:/cloud-init/openstack/latest/user_data"
)

Mount binds

View Source
const (
	DefaultSSHPublicKeyFile = "id_rsa.pub"
)

VM launcher environment variables

View Source
const DiskDefaultSizeGB = 50

DiskDefaultSizeGB is the default size of qcow2 root disk in GB.

Variables

This section is empty.

Functions

This section is empty.

Types

type ComposeConfig

type ComposeConfig struct {
	VMs       []Instance `yaml:"vms"`
	Namespace string     `yaml:"namespace"`
}

ComposeConfig defines a VMs orchestration template

type ConfigDriveMetaData

type ConfigDriveMetaData struct {
	AvailabilityZone string            `json:"availavility_zone"`
	Hostname         string            `json:"hostname"`
	LaunchIndex      string            `json:"launch_index"`
	Name             string            `json:"name"`
	Meta             map[string]string `json:"meta"`
	PublicKeys       map[string]string `json:"public_keys"`
	UUID             string            `json:"uuid"`
}

ConfigDriveMetaData stands for cloud images config drive

type Instance

type Instance struct {
	ID               string            `yaml:"id"`
	Name             string            `yaml:"name"`
	Namespace        string            `yaml:"namespace"`
	ParentImage      string            `yaml:"image"`
	Flavor           string            `yaml:"flavor"`
	Size             Size              `yaml:"size"`
	Workdir          string            `yaml:"workdir"`
	SSHPublicKeyFile string            `yaml:"sshkey"`
	UserData         string            `yaml:"user-data"`
	Cloud            bool              `yaml:"cloud"`
	Efi              bool              `yaml:"efi"`
	VNCPort          int64             `yaml:"vnc-port"`
	NetOpts          NetworkingOptions `yaml:"network"`
	Shares           []string          `yaml:"shares"`
	ContainerEnvVars []string          `yaml:"ContainerEnvVars"`
}

Instance contains all VM's attributes

func (*Instance) Check

func (ins *Instance) Check() (err error)

Check validates and fixes VMs values nolint: gocyclo, funlen, gocognit

type NetworkingOptions

type NetworkingOptions struct {
	IP    string   `yaml:"ip"`
	MAC   string   `yaml:"mac"`
	NetID string   `yaml:"net-id"`
	DNS   []string `yaml:"dns"`
}

NetworkingOptions specifies network details for new VM

type Size

type Size struct {
	CPUModel string `yaml:"cpu-model"`
	Sockets  int    `yaml:"sockets"`
	Cpus     int    `yaml:"cpus"`
	Cores    int    `yaml:"cores"`
	Threads  int    `yaml:"threads"`
	RAM      int    `yaml:"ram"`
	DISK     int    `yaml:"disk"`
}

Size specifies all custome VM size fields

func GetSizeFromFlavor

func GetSizeFromFlavor(flavor string) (size Size)

GetSizeFromFlavor gets default set of values from a given flavor

func NewSize

func NewSize(model string, sockets, cpus, cores, threads, ram, disk int) Size

NewSize creates a new VMSize specification

Jump to

Keyboard shortcuts

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