platform

package
v0.6.0 Latest Latest
Warning

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

Go to latest
Published: Jun 21, 2017 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CheckMachine added in v0.2.0

func CheckMachine(m Machine) error

CheckMachine tests a machine for various error conditions such as ssh being available and no systemd units failing at the time ssh is reachable. It also ensures the remote system is running CoreOS.

TODO(mischief): better error messages.

func EnableSelinux added in v0.2.0

func EnableSelinux(m Machine) error

Enable SELinux on a machine (skip on machines without SELinux support)

func InstallFile

func InstallFile(in io.Reader, m Machine, to string) error

InstallFile copies data from in to the path to on m.

func Manhole

func Manhole(m Machine) error

Manhole connects os.Stdin, os.Stdout, and os.Stderr to an interactive shell session on the Machine m. Manhole blocks until the shell session has ended. If os.Stdin does not refer to a TTY, Manhole returns immediately with a nil error.

func ReadFile added in v0.0.10

func ReadFile(m Machine, path string) (io.ReadCloser, error)

ReadFile returns a io.ReadCloser that streams the requested file. The caller should close the reader when finished.

func StartReboot added in v0.3.0

func StartReboot(m Machine) error

Reboots a machine, stopping ssh first. Afterwards run CheckMachine to verify the system is back and operational.

func TransferFile added in v0.0.10

func TransferFile(src Machine, srcPath string, dst Machine, dstPath string) error

Copy a file between two machines in a cluster.

Types

type BaseCluster added in v0.2.0

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

func NewBaseCluster added in v0.2.0

func NewBaseCluster(basename string, rconf *RuntimeConfig) (*BaseCluster, error)

func NewBaseClusterWithDialer added in v0.2.0

func NewBaseClusterWithDialer(basename string, rconf *RuntimeConfig, dialer network.Dialer) (*BaseCluster, error)

func (*BaseCluster) AddMach added in v0.2.0

func (bc *BaseCluster) AddMach(m Machine)

func (*BaseCluster) ConsoleOutput added in v0.6.0

func (bc *BaseCluster) ConsoleOutput() map[string]string

func (*BaseCluster) DelMach added in v0.2.0

func (bc *BaseCluster) DelMach(m Machine)

func (*BaseCluster) Destroy added in v0.2.0

func (bc *BaseCluster) Destroy() error

Destroy destroys each machine in the cluster and closes the SSH agent.

func (*BaseCluster) GetDiscoveryURL added in v0.2.0

func (bc *BaseCluster) GetDiscoveryURL(size int) (string, error)

XXX(mischief): i don't really think this belongs here, but it completes the interface we've established.

func (*BaseCluster) Keys added in v0.2.0

func (bc *BaseCluster) Keys() ([]*agent.Key, error)

func (*BaseCluster) Machines added in v0.2.0

func (bc *BaseCluster) Machines() []Machine

func (*BaseCluster) Name added in v0.2.0

func (bc *BaseCluster) Name() string

func (*BaseCluster) PasswordSSHClient added in v0.2.0

func (bc *BaseCluster) PasswordSSHClient(ip string, user string, password string) (*ssh.Client, error)

func (*BaseCluster) RenderUserData added in v0.6.0

func (bc *BaseCluster) RenderUserData(userdata *conf.UserData, ignitionVars map[string]string) (*conf.Conf, error)

func (*BaseCluster) RuntimeConf added in v0.6.0

func (bc *BaseCluster) RuntimeConf() RuntimeConfig

func (*BaseCluster) SSH added in v0.2.0

func (bc *BaseCluster) SSH(m Machine, cmd string) ([]byte, error)

func (*BaseCluster) SSHClient added in v0.2.0

func (bc *BaseCluster) SSHClient(ip string) (*ssh.Client, error)

func (*BaseCluster) UserSSHClient added in v0.6.0

func (bc *BaseCluster) UserSSHClient(ip, user string) (*ssh.Client, error)

type Cluster

type Cluster interface {
	// NewMachine creates a new CoreOS machine.
	NewMachine(userdata *conf.UserData) (Machine, error)

	// Machines returns a slice of the active machines in the Cluster.
	Machines() []Machine

	// GetDiscoveryURL returns a new etcd discovery URL.
	GetDiscoveryURL(size int) (string, error)

	// Destroy terminates each machine in the cluster and frees any other
	// associated resources.
	Destroy() error

	// ConsoleOutput returns a map of console output from destroyed
	// cluster machines.
	ConsoleOutput() map[string]string
}

Cluster represents a cluster of CoreOS machines within a single platform.

type Journal added in v0.3.0

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

Journal manages recording the journal of a Machine.

func NewJournal added in v0.3.0

func NewJournal(dir string) (*Journal, error)

NewJournal creates a Journal recorder that will log to "journal.txt" inside the given output directory.

func (*Journal) Destroy added in v0.3.0

func (j *Journal) Destroy() error

func (*Journal) Start added in v0.3.0

func (j *Journal) Start(ctx context.Context, m Machine) error

Start begins/resumes streaming the system journal to journal.txt.

type Machine

type Machine interface {
	// ID returns the plaform-specific machine identifier.
	ID() string

	// IP returns the machine's public IP.
	IP() string

	// PrivateIP returns the machine's private IP.
	PrivateIP() string

	// SSHClient establishes a new SSH connection to the machine.
	SSHClient() (*ssh.Client, error)

	// PasswordSSHClient establishes a new SSH connection using the provided credentials.
	PasswordSSHClient(user string, password string) (*ssh.Client, error)

	// SSH runs a single command over a new SSH connection.
	SSH(cmd string) ([]byte, error)

	// Reboot restarts the machine and waits for it to come back.
	Reboot() error

	// Destroy terminates the machine and frees associated resources.
	Destroy() error

	// ConsoleOutput returns the machine's console output if available,
	// or an empty string.  Only expected to be valid after Destroy().
	ConsoleOutput() string
}

Machine represents a CoreOS instance.

func NewMachines

func NewMachines(c Cluster, userdata *conf.UserData, n int) ([]Machine, error)

NewMachines spawns n instances in cluster c, with each instance passed the same userdata.

type Options added in v0.1.4

type Options struct {
	BaseName string
}

Options contains the base options for all clusters.

type RuntimeConfig added in v0.6.0

type RuntimeConfig struct {
	OutputDir string

	NoSSHKeyInUserData bool // don't inject SSH key into Ignition/cloud-config
	NoSSHKeyInMetadata bool // don't add SSH key to platform metadata
}

RuntimeConfig contains cluster-specific configuration.

Directories

Path Synopsis
api
aws
machine
aws

Jump to

Keyboard shortcuts

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