qemu

package
v0.2.134 Latest Latest
Warning

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

Go to latest
Published: Dec 25, 2019 License: BSD-2-Clause Imports: 17 Imported by: 0

README

QEMU

Features

  • CPU は host で渡している
  • Ballooning はしない
  • 基本的にはvirtioで接続
  • SCSIコントローラを作成している

Dependency packages

  • qemu-kvm
apt install -y \
    qemu-kvm

Test parameters

DISABLE_KVM

When setting environment variable, enable KVM.

DISABLE_KVM=1 make test-small

Documentation

Index

Constants

View Source
const MAX_RETRY_TO_START = 5

Variables

View Source
var RETRY_DURATION_IN_START = 100 * time.Millisecond

Functions

func GetNewListenPort

func GetNewListenPort(begin uint16) uint16

Types

type Qemu

type Qemu struct {
	// contains filtered or unexported fields
}

func OpenQemu

func OpenQemu(name string) (*Qemu, error)

func (Qemu) AttachISO

func (q Qemu) AttachISO(label string, filepath *url.URL, index uint) error

TODO: 動作が怪しい

func (Qemu) AttachQcow2

func (q Qemu) AttachQcow2(label string, filepath *url.URL, index uint) error

(QEMU) blockdev-add options={"driver":"qcow2","id":"drive-virtio-disk0","file":{"driver":"file","filename":"/home/h-otter/wk/test-qemu/ubuntu16.04.qcow2"}} (QEMU) device_add driver=virtio-blk-pci bus=pci.0 scsi=off drive=drive-virtio-disk0 id=virtio-disk0 bootindex=1 まだべき等ではない TODO:

  • すでにアタッチされていた場合、エラー処理を文字列で判定する必要がある
  • bootindexがどうやって更新されるのかがわからない

func (Qemu) AttachRaw

func (q Qemu) AttachRaw(label string, filepath *url.URL, index uint) error

func (Qemu) AttachTap

func (q Qemu) AttachTap(label, tap string, mac net.HardwareAddr) error

(QEMU) netdev_add id=tap0 type=tap vhost=true ifname=tap0 script=no downscript=no (QEMU) device_add driver=virtio-net-pci netdev=tap0 id=test0 mac=52:54:00:df:89:29 bus=pci.0 まだべき等ではない TODO:

  • すでにアタッチされていた場合、エラー処理を文字列で判定する必要がある
  • MACアドレスを変更する

func (Qemu) Boot

func (q Qemu) Boot() error

func (*Qemu) Close

func (q *Qemu) Close() error

func (*Qemu) Delete

func (q *Qemu) Delete() error

func (Qemu) GetVNCWebsocketPort

func (q Qemu) GetVNCWebsocketPort() int

func (Qemu) HardReset

func (q Qemu) HardReset() error

func (Qemu) HardShutdown

func (q Qemu) HardShutdown() error

func (Qemu) IsRunning

func (q Qemu) IsRunning() bool

func (Qemu) Shutdown

func (q Qemu) Shutdown() error

func (*Qemu) Start

func (q *Qemu) Start(id uuid.UUID, qmpPath string, vcpus uint32, memory uint64) error

func (Qemu) Status

func (q Qemu) Status() (Status, error)

type QemuArgs

type QemuArgs struct {
	// contains filtered or unexported fields
}

QemuArgs is QEMU arguments parser TODO: 毎回文字列探索するので遅い

func ParseQemuArgs

func ParseQemuArgs(args []string) *QemuArgs

func (QemuArgs) GetArgs

func (q QemuArgs) GetArgs() []string

func (QemuArgs) GetOptionValues

func (q QemuArgs) GetOptionValues(key string) []string

func (QemuArgs) GetParsedOptionValueById

func (q QemuArgs) GetParsedOptionValueById(key, id string) ([]string, map[string]string, bool)

func (QemuArgs) GetTopParsedOptionValue

func (q QemuArgs) GetTopParsedOptionValue(key string) ([]string, map[string]string, bool)

func (QemuArgs) ParseOptionValue

func (q QemuArgs) ParseOptionValue(value string) ([]string, map[string]string)

type Status

type Status int
const (
	StatusDebug         Status = Status(raw.RunStateDebug)
	StatusFinishMigrate Status = Status(raw.RunStateFinishMigrate)
	StatusGuestPanicked Status = Status(raw.RunStateGuestPanicked)
	StatusIOError       Status = Status(raw.RunStateIOError)
	StatusInMigrate     Status = Status(raw.RunStateInmigrate)
	StatusInternalError Status = Status(raw.RunStateInternalError)
	StatusPaused        Status = Status(raw.RunStatePaused)
	StatusPostMigrate   Status = Status(raw.RunStatePostmigrate)
	StatusPreLaunch     Status = Status(raw.RunStatePrelaunch)
	StatusRestoreVM     Status = Status(raw.RunStateRestoreVM)
	StatusRunning       Status = Status(raw.RunStateRunning)
	StatusSaveVM        Status = Status(raw.RunStateSaveVM)
	StatusShutdown      Status = Status(raw.RunStateShutdown)
	StatusSuspended     Status = Status(raw.RunStateSuspended)
	StatusWatchdog      Status = Status(raw.RunStateWatchdog)
)

Jump to

Keyboard shortcuts

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