common

package
v0.6.0 Latest Latest
Warning

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

Go to latest
Published: May 2, 2014 License: MPL-2.0 Imports: 22 Imported by: 0

Documentation ¶

Overview ¶

These functions are compatible with WS 9 and 10 on *NIX

Index ¶

Constants ¶

View Source
const BuilderId = "mitchellh.vmware"

BuilderId for the local artifacts

View Source
const VMWARE_WS_VERSION = "10"

Variables ¶

View Source
var KeepFileExtensions = []string{".nvram", ".vmdk", ".vmsd", ".vmx", ".vmxf"}

These are the extensions of files that are important for the function of a VMware virtual machine. Any other file is discarded as part of the build.

Functions ¶

func EncodeVMX ¶

func EncodeVMX(contents map[string]string) string

EncodeVMX takes a map and turns it into valid VMX contents.

func NewLocalArtifact ¶

func NewLocalArtifact(dir string) (packer.Artifact, error)

NewLocalArtifact returns a VMware artifact containing the files in the given directory.

func ParseVMX ¶

func ParseVMX(contents string) map[string]string

ParseVMX parses the keys and values from a VMX file and returns them as a Go map.

func ReadVMX ¶

func ReadVMX(path string) (map[string]string, error)

ReadVMX takes a path to a VMX file and reads it into a k/v mapping.

func SSHAddressFunc ¶

func SSHAddressFunc(config *SSHConfig) func(multistep.StateBag) (string, error)

func SSHConfigFunc ¶

func SSHConfigFunc(config *SSHConfig) func(multistep.StateBag) (*gossh.ClientConfig, error)

func WriteVMX ¶

func WriteVMX(path string, data map[string]string) (err error)

WriteVMX takes a path to a VMX file and contents in the form of a map and writes it out.

Types ¶

type DHCPLeaseGuestLookup ¶

type DHCPLeaseGuestLookup struct {
	// Driver that is being used (to find leases path)
	Driver Driver

	// Device that the guest is connected to.
	Device string

	// MAC address of the guest.
	MACAddress string
}

DHCPLeaseGuestLookup looks up the IP address of a guest using DHCP lease information from the VMware network devices.

func (*DHCPLeaseGuestLookup) GuestIP ¶

func (f *DHCPLeaseGuestLookup) GuestIP() (string, error)

type Driver ¶

type Driver interface {
	// Clone clones the VMX and the disk to the destination path. The
	// destination is a path to the VMX file. The disk will be copied
	// to that same directory.
	Clone(dst string, src string) error

	// CompactDisk compacts a virtual disk.
	CompactDisk(string) error

	// CreateDisk creates a virtual disk with the given size.
	CreateDisk(string, string, string) error

	// Checks if the VMX file at the given path is running.
	IsRunning(string) (bool, error)

	// SSHAddress returns the SSH address for the VM that is being
	// managed by this driver.
	SSHAddress(multistep.StateBag) (string, error)

	// Start starts a VM specified by the path to the VMX given.
	Start(string, bool) error

	// Stop stops a VM specified by the path to the VMX given.
	Stop(string) error

	// SuppressMessages modifies the VMX or surrounding directory so that
	// VMware doesn't show any annoying messages.
	SuppressMessages(string) error

	// Get the path to the VMware ISO for the given flavor.
	ToolsIsoPath(string) string

	// Attach the VMware tools ISO
	ToolsInstall() error

	// Get the path to the DHCP leases file for the given device.
	DhcpLeasesPath(string) string

	// Verify checks to make sure that this driver should function
	// properly. This should check that all the files it will use
	// appear to exist and so on. If everything is okay, this doesn't
	// return an error. Otherwise, this returns an error.
	Verify() error
}

A driver is able to talk to VMware, control virtual machines, etc.

func NewDriver ¶

func NewDriver(dconfig *DriverConfig, config *SSHConfig) (Driver, error)

NewDriver returns a new driver implementation for this operating system, or an error if the driver couldn't be initialized.

type DriverConfig ¶

type DriverConfig struct {
	FusionAppPath string `mapstructure:"fusion_app_path"`
}

func (*DriverConfig) Prepare ¶

func (c *DriverConfig) Prepare(t *packer.ConfigTemplate) []error

type DriverMock ¶

type DriverMock struct {
	sync.Mutex

	CloneCalled bool
	CloneDst    string
	CloneSrc    string
	CloneErr    error

	CompactDiskCalled bool
	CompactDiskPath   string
	CompactDiskErr    error

	CreateDiskCalled bool
	CreateDiskOutput string
	CreateDiskSize   string
	CreateDiskTypeId string
	CreateDiskErr    error

	IsRunningCalled bool
	IsRunningPath   string
	IsRunningResult bool
	IsRunningErr    error

	SSHAddressCalled bool
	SSHAddressState  multistep.StateBag
	SSHAddressResult string
	SSHAddressErr    error

	StartCalled   bool
	StartPath     string
	StartHeadless bool
	StartErr      error

	StopCalled bool
	StopPath   string
	StopErr    error

	SuppressMessagesCalled bool
	SuppressMessagesPath   string
	SuppressMessagesErr    error

	ToolsIsoPathCalled bool
	ToolsIsoPathFlavor string
	ToolsIsoPathResult string

	ToolsInstallCalled bool
	ToolsInstallErr    error

	DhcpLeasesPathCalled bool
	DhcpLeasesPathDevice string
	DhcpLeasesPathResult string

	VerifyCalled bool
	VerifyErr    error
}

func (*DriverMock) Clone ¶

func (d *DriverMock) Clone(dst string, src string) error

func (*DriverMock) CompactDisk ¶

func (d *DriverMock) CompactDisk(path string) error

func (*DriverMock) CreateDisk ¶

func (d *DriverMock) CreateDisk(output string, size string, typeId string) error

func (*DriverMock) DhcpLeasesPath ¶

func (d *DriverMock) DhcpLeasesPath(device string) string

func (*DriverMock) IsRunning ¶

func (d *DriverMock) IsRunning(path string) (bool, error)

func (*DriverMock) SSHAddress ¶

func (d *DriverMock) SSHAddress(state multistep.StateBag) (string, error)

func (*DriverMock) Start ¶

func (d *DriverMock) Start(path string, headless bool) error

func (*DriverMock) Stop ¶

func (d *DriverMock) Stop(path string) error

func (*DriverMock) SuppressMessages ¶

func (d *DriverMock) SuppressMessages(path string) error

func (*DriverMock) ToolsInstall ¶ added in v0.6.0

func (d *DriverMock) ToolsInstall() error

func (*DriverMock) ToolsIsoPath ¶

func (d *DriverMock) ToolsIsoPath(flavor string) string

func (*DriverMock) Verify ¶

func (d *DriverMock) Verify() error

type Fusion5Driver ¶

type Fusion5Driver struct {
	// This is the path to the "VMware Fusion.app"
	AppPath string

	// SSHConfig are the SSH settings for the Fusion VM
	SSHConfig *SSHConfig
}

Fusion5Driver is a driver that can run VMWare Fusion 5.

func (*Fusion5Driver) Clone ¶

func (d *Fusion5Driver) Clone(dst, src string) error

func (*Fusion5Driver) CompactDisk ¶

func (d *Fusion5Driver) CompactDisk(diskPath string) error

func (*Fusion5Driver) CreateDisk ¶

func (d *Fusion5Driver) CreateDisk(output string, size string, type_id string) error

func (*Fusion5Driver) DhcpLeasesPath ¶

func (d *Fusion5Driver) DhcpLeasesPath(device string) string

func (*Fusion5Driver) IsRunning ¶

func (d *Fusion5Driver) IsRunning(vmxPath string) (bool, error)

func (*Fusion5Driver) SSHAddress ¶

func (d *Fusion5Driver) SSHAddress(state multistep.StateBag) (string, error)

func (*Fusion5Driver) Start ¶

func (d *Fusion5Driver) Start(vmxPath string, headless bool) error

func (*Fusion5Driver) Stop ¶

func (d *Fusion5Driver) Stop(vmxPath string) error

func (*Fusion5Driver) SuppressMessages ¶

func (d *Fusion5Driver) SuppressMessages(vmxPath string) error

func (*Fusion5Driver) ToolsInstall ¶ added in v0.6.0

func (d *Fusion5Driver) ToolsInstall() error

func (*Fusion5Driver) ToolsIsoPath ¶

func (d *Fusion5Driver) ToolsIsoPath(k string) string

func (*Fusion5Driver) Verify ¶

func (d *Fusion5Driver) Verify() error

type Fusion6Driver ¶

type Fusion6Driver struct {
	Fusion5Driver
}

Fusion6Driver is a driver that can run VMWare Fusion 5.

func (*Fusion6Driver) Clone ¶

func (d *Fusion6Driver) Clone(dst, src string) error

func (*Fusion6Driver) Verify ¶

func (d *Fusion6Driver) Verify() error

type GuestIPFinder ¶

type GuestIPFinder interface {
	GuestIP() (string, error)
}

Interface to help find the IP address of a running virtual machine.

type LocalOutputDir ¶

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

LocalOutputDir is an OutputDir implementation where the directory is on the local machine.

func (*LocalOutputDir) DirExists ¶

func (d *LocalOutputDir) DirExists() (bool, error)

func (*LocalOutputDir) ListFiles ¶

func (d *LocalOutputDir) ListFiles() ([]string, error)

func (*LocalOutputDir) MkdirAll ¶

func (d *LocalOutputDir) MkdirAll() error

func (*LocalOutputDir) Remove ¶

func (d *LocalOutputDir) Remove(path string) error

func (*LocalOutputDir) RemoveAll ¶

func (d *LocalOutputDir) RemoveAll() error

func (*LocalOutputDir) SetOutputDir ¶

func (d *LocalOutputDir) SetOutputDir(path string)

func (*LocalOutputDir) String ¶

func (d *LocalOutputDir) String() string

type OutputConfig ¶

type OutputConfig struct {
	OutputDir string `mapstructure:"output_directory"`
}

func (*OutputConfig) Prepare ¶

type OutputDir ¶

type OutputDir interface {
	DirExists() (bool, error)
	ListFiles() ([]string, error)
	MkdirAll() error
	Remove(string) error
	RemoveAll() error
	SetOutputDir(string)
	String() string
}

OutputDir is an interface type that abstracts the creation and handling of the output directory for VMware-based products. The abstraction is made so that the output directory can be properly made on remote (ESXi) based VMware products as well as local.

type Player5LinuxDriver ¶

type Player5LinuxDriver struct {
	AppPath          string
	VdiskManagerPath string
	QemuImgPath      string
	VmrunPath        string

	// SSHConfig are the SSH settings for the Fusion VM
	SSHConfig *SSHConfig
}

Player5LinuxDriver is a driver that can run VMware Player 5 on Linux.

func (*Player5LinuxDriver) Clone ¶

func (d *Player5LinuxDriver) Clone(dst, src string) error

func (*Player5LinuxDriver) CompactDisk ¶

func (d *Player5LinuxDriver) CompactDisk(diskPath string) error

func (*Player5LinuxDriver) CreateDisk ¶

func (d *Player5LinuxDriver) CreateDisk(output string, size string, type_id string) error

func (*Player5LinuxDriver) DhcpLeasesPath ¶

func (d *Player5LinuxDriver) DhcpLeasesPath(device string) string

func (*Player5LinuxDriver) IsRunning ¶

func (d *Player5LinuxDriver) IsRunning(vmxPath string) (bool, error)

func (*Player5LinuxDriver) SSHAddress ¶

func (d *Player5LinuxDriver) SSHAddress(state multistep.StateBag) (string, error)

func (*Player5LinuxDriver) Start ¶

func (d *Player5LinuxDriver) Start(vmxPath string, headless bool) error

func (*Player5LinuxDriver) Stop ¶

func (d *Player5LinuxDriver) Stop(vmxPath string) error

func (*Player5LinuxDriver) SuppressMessages ¶

func (d *Player5LinuxDriver) SuppressMessages(vmxPath string) error

func (*Player5LinuxDriver) ToolsInstall ¶ added in v0.6.0

func (d *Player5LinuxDriver) ToolsInstall() error

func (*Player5LinuxDriver) ToolsIsoPath ¶

func (d *Player5LinuxDriver) ToolsIsoPath(flavor string) string

func (*Player5LinuxDriver) Verify ¶

func (d *Player5LinuxDriver) Verify() error

type RunConfig ¶

type RunConfig struct {
	Headless    bool   `mapstructure:"headless"`
	RawBootWait string `mapstructure:"boot_wait"`

	BootWait time.Duration ``
}

func (*RunConfig) Prepare ¶

func (c *RunConfig) Prepare(t *packer.ConfigTemplate) []error

type SSHConfig ¶

type SSHConfig struct {
	SSHUser           string `mapstructure:"ssh_username"`
	SSHKeyPath        string `mapstructure:"ssh_key_path"`
	SSHPassword       string `mapstructure:"ssh_password"`
	SSHHost           string `mapstructure:"ssh_host"`
	SSHPort           uint   `mapstructure:"ssh_port"`
	SSHSkipRequestPty bool   `mapstructure:"ssh_skip_request_pty"`
	RawSSHWaitTimeout string `mapstructure:"ssh_wait_timeout"`

	SSHWaitTimeout time.Duration
}

func (*SSHConfig) Prepare ¶

func (c *SSHConfig) Prepare(t *packer.ConfigTemplate) []error

type ShutdownConfig ¶

type ShutdownConfig struct {
	ShutdownCommand    string `mapstructure:"shutdown_command"`
	RawShutdownTimeout string `mapstructure:"shutdown_timeout"`

	ShutdownTimeout time.Duration ``
}

func (*ShutdownConfig) Prepare ¶

func (c *ShutdownConfig) Prepare(t *packer.ConfigTemplate) []error

type StepCleanFiles ¶

type StepCleanFiles struct{}

This step removes unnecessary files from the final result.

Uses:

dir    OutputDir
ui     packer.Ui

Produces:

<nothing>

func (StepCleanFiles) Cleanup ¶

func (StepCleanFiles) Run ¶

type StepCleanVMX ¶

type StepCleanVMX struct{}

This step cleans up the VMX by removing or changing this prior to being ready for use.

Uses:

ui     packer.Ui
vmx_path string

Produces:

<nothing>

func (StepCleanVMX) Cleanup ¶

func (StepCleanVMX) Cleanup(multistep.StateBag)

func (StepCleanVMX) Run ¶

type StepCompactDisk ¶

type StepCompactDisk struct {
	Skip bool
}

This step compacts the virtual disk for the VM unless the "skip_compaction" boolean is true.

Uses:

driver Driver
full_disk_path string
ui     packer.Ui

Produces:

<nothing>

func (StepCompactDisk) Cleanup ¶

func (StepCompactDisk) Run ¶

type StepConfigureVMX ¶

type StepConfigureVMX struct {
	CustomData map[string]string
}

This step configures a VMX by setting some default settings as well as taking in custom data to set, attaching a floppy if it exists, etc.

Uses:

vmx_path string

func (*StepConfigureVMX) Cleanup ¶

func (s *StepConfigureVMX) Cleanup(state multistep.StateBag)

func (*StepConfigureVMX) Run ¶

type StepOutputDir ¶

type StepOutputDir struct {
	Force bool
	// contains filtered or unexported fields
}

StepOutputDir sets up the output directory by creating it if it does not exist, deleting it if it does exist and we're forcing, and cleaning it up when we're done with it.

func (*StepOutputDir) Cleanup ¶

func (s *StepOutputDir) Cleanup(state multistep.StateBag)

func (*StepOutputDir) Run ¶

type StepRun ¶

type StepRun struct {
	BootWait           time.Duration
	DurationBeforeStop time.Duration
	Headless           bool
	// contains filtered or unexported fields
}

This step runs the created virtual machine.

Uses:

driver Driver
ui     packer.Ui
vmx_path string

Produces:

<nothing>

func (*StepRun) Cleanup ¶

func (s *StepRun) Cleanup(state multistep.StateBag)

func (*StepRun) Run ¶

type StepShutdown ¶

type StepShutdown struct {
	Command string
	Timeout time.Duration

	// Set this to true if we're testing
	Testing bool
}

This step shuts down the machine. It first attempts to do so gracefully, but ultimately forcefully shuts it down if that fails.

Uses:

communicator packer.Communicator
dir OutputDir
driver Driver
ui     packer.Ui
vmx_path string

Produces:

<nothing>

func (*StepShutdown) Cleanup ¶

func (s *StepShutdown) Cleanup(state multistep.StateBag)

func (*StepShutdown) Run ¶

type StepSuppressMessages ¶

type StepSuppressMessages struct{}

This step suppresses any messages that VMware product might show.

func (*StepSuppressMessages) Cleanup ¶

func (s *StepSuppressMessages) Cleanup(state multistep.StateBag)

func (*StepSuppressMessages) Run ¶

type VMXConfig ¶

type VMXConfig struct {
	VMXData map[string]string `mapstructure:"vmx_data"`
}

func (*VMXConfig) Prepare ¶

func (c *VMXConfig) Prepare(t *packer.ConfigTemplate) []error

type Workstation10Driver ¶ added in v0.6.0

type Workstation10Driver struct {
	Workstation9Driver
}

func (*Workstation10Driver) Clone ¶ added in v0.6.0

func (d *Workstation10Driver) Clone(dst, src string) error

func (*Workstation10Driver) Verify ¶ added in v0.6.0

func (d *Workstation10Driver) Verify() error

type Workstation9Driver ¶

type Workstation9Driver struct {
	AppPath          string
	VdiskManagerPath string
	VmrunPath        string

	// SSHConfig are the SSH settings for the Fusion VM
	SSHConfig *SSHConfig
}

Workstation9Driver is a driver that can run VMware Workstation 9

func (*Workstation9Driver) Clone ¶

func (d *Workstation9Driver) Clone(dst, src string) error

func (*Workstation9Driver) CompactDisk ¶

func (d *Workstation9Driver) CompactDisk(diskPath string) error

func (*Workstation9Driver) CreateDisk ¶

func (d *Workstation9Driver) CreateDisk(output string, size string, type_id string) error

func (*Workstation9Driver) DhcpLeasesPath ¶

func (d *Workstation9Driver) DhcpLeasesPath(device string) string

func (*Workstation9Driver) IsRunning ¶

func (d *Workstation9Driver) IsRunning(vmxPath string) (bool, error)

func (*Workstation9Driver) SSHAddress ¶

func (d *Workstation9Driver) SSHAddress(state multistep.StateBag) (string, error)

func (*Workstation9Driver) Start ¶

func (d *Workstation9Driver) Start(vmxPath string, headless bool) error

func (*Workstation9Driver) Stop ¶

func (d *Workstation9Driver) Stop(vmxPath string) error

func (*Workstation9Driver) SuppressMessages ¶

func (d *Workstation9Driver) SuppressMessages(vmxPath string) error

func (*Workstation9Driver) ToolsInstall ¶ added in v0.6.0

func (d *Workstation9Driver) ToolsInstall() error

func (*Workstation9Driver) ToolsIsoPath ¶

func (d *Workstation9Driver) ToolsIsoPath(flavor string) string

func (*Workstation9Driver) Verify ¶

func (d *Workstation9Driver) Verify() error

func (*Workstation9Driver) VmnetnatConfPath ¶

func (d *Workstation9Driver) VmnetnatConfPath() string

Jump to

Keyboard shortcuts

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