instances

package
v0.0.0-...-36d1bee Latest Latest
Warning

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

Go to latest
Published: Mar 3, 2017 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type FakeInstanceGroups

type FakeInstanceGroups struct {
	Ports []int64
	// contains filtered or unexported fields
}

FakeInstanceGroups fakes out the instance groups api.

func NewFakeInstanceGroups

func NewFakeInstanceGroups(nodes sets.String) *FakeInstanceGroups

NewFakeInstanceGroups creates a new FakeInstanceGroups.

func (*FakeInstanceGroups) AddInstancesToInstanceGroup

func (f *FakeInstanceGroups) AddInstancesToInstanceGroup(name, zone string, instanceNames []string) error

AddInstancesToInstanceGroup fakes adding instances to an instance group.

func (*FakeInstanceGroups) AddPortToInstanceGroup

func (f *FakeInstanceGroups) AddPortToInstanceGroup(ig *compute.InstanceGroup, port int64) (*compute.NamedPort, error)

AddPortToInstanceGroup fakes adding ports to an Instance Group.

func (*FakeInstanceGroups) CreateInstanceGroup

func (f *FakeInstanceGroups) CreateInstanceGroup(name, zone string) (*compute.InstanceGroup, error)

CreateInstanceGroup fakes instance group creation.

func (*FakeInstanceGroups) DeleteInstanceGroup

func (f *FakeInstanceGroups) DeleteInstanceGroup(name, zone string) error

DeleteInstanceGroup fakes instance group deletion.

func (*FakeInstanceGroups) GetInstanceGroup

func (f *FakeInstanceGroups) GetInstanceGroup(name, zone string) (*compute.InstanceGroup, error)

GetInstanceGroup fakes getting an instance group from the cloud.

func (*FakeInstanceGroups) GetInstancesByZone

func (f *FakeInstanceGroups) GetInstancesByZone() map[string][]string

GetInstancesByZone returns the zone to instances map.

func (*FakeInstanceGroups) ListInstancesInInstanceGroup

func (f *FakeInstanceGroups) ListInstancesInInstanceGroup(name, zone string, state string) (*compute.InstanceGroupsListInstances, error)

ListInstancesInInstanceGroup fakes listing instances in an instance group.

func (*FakeInstanceGroups) RemoveInstancesFromInstanceGroup

func (f *FakeInstanceGroups) RemoveInstancesFromInstanceGroup(name, zone string, instanceNames []string) error

RemoveInstancesFromInstanceGroup fakes removing instances from an instance group.

type FakeZoneLister

type FakeZoneLister struct {
	Zones []string
}

FakeZoneLister records zones for nodes.

func (*FakeZoneLister) GetZoneForNode

func (z *FakeZoneLister) GetZoneForNode(name string) (string, error)

GetZoneForNode returns the only zone stored in the fake zone lister.

func (*FakeZoneLister) ListZones

func (z *FakeZoneLister) ListZones() ([]string, error)

ListZones returns the list of zones.

type InstanceGroups

type InstanceGroups interface {
	GetInstanceGroup(name, zone string) (*compute.InstanceGroup, error)
	CreateInstanceGroup(name, zone string) (*compute.InstanceGroup, error)
	DeleteInstanceGroup(name, zone string) error

	// TODO: Refactor for modulatiry.
	ListInstancesInInstanceGroup(name, zone string, state string) (*compute.InstanceGroupsListInstances, error)
	AddInstancesToInstanceGroup(name, zone string, instanceNames []string) error
	RemoveInstancesFromInstanceGroup(name, zone string, instanceName []string) error
	AddPortToInstanceGroup(ig *compute.InstanceGroup, port int64) (*compute.NamedPort, error)
}

InstanceGroups is an interface for managing gce instances groups, and the instances therein.

type Instances

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

Instances implements NodePool.

func (*Instances) Add

func (i *Instances) Add(groupName string, names []string) error

Add adds the given instances to the appropriately zoned Instance Group.

func (*Instances) AddInstanceGroup

func (i *Instances) AddInstanceGroup(name string, port int64) ([]*compute.InstanceGroup, *compute.NamedPort, error)

AddInstanceGroup creates or gets an instance group if it doesn't exist and adds the given port to it. Returns a list of one instance group per zone, all of which have the exact same named port.

func (*Instances) DeleteInstanceGroup

func (i *Instances) DeleteInstanceGroup(name string) error

DeleteInstanceGroup deletes the given IG by name, from all zones.

func (*Instances) Get

func (i *Instances) Get(name, zone string) (*compute.InstanceGroup, error)

Get returns the Instance Group by name.

func (*Instances) Init

func (i *Instances) Init(zl zoneLister)

Init initializes the instance pool. The given zoneLister is used to list all zones that require an instance group, and to lookup which zone a given Kubernetes node is in so we can add it to the right instance group.

func (*Instances) Remove

func (i *Instances) Remove(groupName string, names []string) error

Remove removes the given instances from the appropriately zoned Instance Group.

func (*Instances) Sync

func (i *Instances) Sync(nodes []string) (err error)

Sync syncs kubernetes instances with the instances in the instance group.

type NodePool

type NodePool interface {
	Init(zl zoneLister)

	// The following 2 methods operate on instance groups.
	AddInstanceGroup(name string, port int64) ([]*compute.InstanceGroup, *compute.NamedPort, error)
	DeleteInstanceGroup(name string) error

	// TODO: Refactor for modularity
	Add(groupName string, nodeNames []string) error
	Remove(groupName string, nodeNames []string) error
	Sync(nodeNames []string) error
	Get(name, zone string) (*compute.InstanceGroup, error)
}

NodePool is an interface to manage a pool of kubernetes nodes synced with vm instances in the cloud through the InstanceGroups interface. It handles zones opaquely using the zoneLister.

func NewNodePool

func NewNodePool(cloud InstanceGroups) NodePool

NewNodePool creates a new node pool.

  • cloud: implements InstanceGroups, used to sync Kubernetes nodes with members of the cloud InstanceGroup.

Jump to

Keyboard shortcuts

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