tb

package
v0.2.22 Latest Latest
Warning

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

Go to latest
Published: Sep 9, 2020 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AllocUnspec      AllocMode = 0
	NoAlloc                    = 1
	NetAlloc                   = 2
	NetEmuAlloc                = 3
	FilesystemAlloc            = 4
	BlockDeviceAlloc           = 5
	PhysicalAlloc              = 6
	VirtualAlloc               = 7
	InfrapodAlloc              = 8
)
View Source
const (
	RoleUnspec      Role = 0
	Node                 = 1
	InfraServer          = 2
	ConsoleServer        = 3
	PowerController      = 4
	NetworkEmulator      = 5
	XpSwitch             = 6
	InfraSwitch          = 7
	MgmtSwitch           = 8
	Gateway              = 9
	Leaf                 = 10
	Fabric               = 11
	Spine                = 12
	InfraLink            = 13
	XpLink               = 14
	Tor                  = 15
	EmuLink              = 16
	StorageServer        = 17
	InfrapodServer       = 18
	MgmtLink             = 19
	EtcdHost             = 20
	MinIOHost            = 21
	RexHost              = 22
	DriverHost           = 23
	ManagerHost          = 24
	CommanderHost        = 25
	SledHost             = 26
	RallyHost            = 27
	GatewayLink          = 28
	HarborEndpoint       = 29
	PDU                  = 30
	EmuSwitch            = 31
	Hypervisor           = 32
	RallyEndpoint        = 33
)

todo this would be better as a 64-bit flag

Variables

This section is empty.

Functions

func AssignSwpRole added in v0.2.18

func AssignSwpRole(resource *Resource, role Role)

Assign switch port role

func DecodeCable

func DecodeCable(props xir.Props) *hw.Cable

func GetCableSpec

func GetCableSpec(x *xir.Link) *hw.Cable

func HasAllocMode

func HasAllocMode(x *xir.Node, allocModes ...AllocMode) bool

func HasRole

func HasRole(x *xir.Node, roles ...Role) bool

func IsXp

func IsXp(x *xir.Endpoint) bool

func PrintMaterials

func PrintMaterials(
	tw *tabwriter.Writer,
	lom LOM,
	parentQuantity int,
	depth int,
)

func ToXir

func ToXir(t Testbed, name string) *xir.Net

Types

type AllocMode

type AllocMode uint16

AllocMode indicates the allocation mode of a resource

type BasicInterfaceConfig

type BasicInterfaceConfig struct {
	Ip InterfaceIPConfig
}

type Cost

type Cost struct {
	Price    float64
	Quantity int
	SKU      string
}

type InterfaceIPConfig

type InterfaceIPConfig struct {
	Addrs []string
	Mtu   int
}

type LOM

type LOM []*Material

func (*LOM) AddDevice

func (b *LOM) AddDevice(sku string, dev *hw.Device)

func (*LOM) AddUnit

func (b *LOM) AddUnit(e hw.Element) *Material

func (LOM) Print

func (b LOM) Print()

type Material

type Material struct {
	Unit     hw.Element
	Quantity int
	LOM      LOM
}

func (*Material) ConfigItems

func (m *Material) ConfigItems() int

type MzLinkInfo

type MzLinkInfo struct {
	LinkId int
}

type Resource

type Resource struct {
	Alloc        []AllocMode `json:"alloc"`
	Roles        []Role      `json:"roles"`
	DefaultImage string      `json:"default_image,omitempty" mapstructure:"default_image"`
	ImageVariant string      `json:"image_variant,omitempty" mapstructure:"image_variant"`
	Ptags        []string    `json:"ptags,omitempty" mapstructure:"ptag"`
	Props        xir.Props   `json:"xir,omitempty"`

	//system.link.name -> role
	LinkRoles map[string]Role `json:"link_roles,omitempty" mapstructure:"link_roles"`
	System    *sys.System     `json:"-"`
}

A Resource captures testbed operation relevant information about a resource. It contains a System object that captures OS level details about the unerlying device.

func DecodeResource

func DecodeResource(props xir.Props) *Resource

DecodeResource attempts to extract and decode a resource spec from a property set. Returns null if a decoding cannot be done.

func GenericFabric

func GenericFabric(kind, role Role, name, ip string, radix int, gbps uint64) *Resource

func GenericLeaf

func GenericLeaf(kind Role, name string, radix int, gbps uint64) *Resource

func GetResourceSpec

func GetResourceSpec(x *xir.Node) *Resource

GetResourceSpec attempts to get a testbed resource specification associated with the provided node. If none can be found, nil is returned.

func LargeServer

func LargeServer(name, imac, xmac string, ptags ...string) *Resource

func MediumServer

func MediumServer(name, imac, xmac string, ptags ...string) *Resource

func SmallServer

func SmallServer(name, imac, xmac string, ptags ...string) *Resource

func (*Resource) Eth

func (r *Resource) Eth(i int) *hw.Port

func (*Resource) GetLinksByRole

func (r *Resource) GetLinksByRole(role Role) []*sys.Link

GetLinksByRole returns all OS level links that have the specified testbed role.

func (*Resource) HasAllocMode

func (r *Resource) HasAllocMode(modes ...AllocMode) bool

HasAllocMode checks if the resource has any of the specified alloc modes.

func (*Resource) HasRole

func (r *Resource) HasRole(roles ...Role) bool

HasRole checks if the resource has any of the specified roles.

func (*Resource) Ipmi added in v0.2.18

func (r *Resource) Ipmi(i int) *hw.Port

func (*Resource) NextSwp added in v0.2.18

func (r *Resource) NextSwp() *hw.Port

func (*Resource) Nic

func (r *Resource) Nic(i int) hw.Nic

Nic a NIC contained within the resource at the spcified index

func (*Resource) NicKind

func (r *Resource) NicKind(kind string) []hw.Nic

func (*Resource) Node

func (r *Resource) Node() *xir.Node

Node generates an XIR node from a resource.

func (*Resource) Port

func (r *Resource) Port(kind string, i int) *hw.Port

func (*Resource) Swp

func (r *Resource) Swp(i int) *hw.Port

type Role

type Role uint16

Role indicates the usage model of a resource in a testbed. A resource may have multiple roles. Roles have an unsigned 16 bit integer identifier. Roles 0-1024 are reserved. The values in the reserved range are defined here.

func (Role) String

func (r Role) String() string

type TBLOM

type TBLOM struct {
	Nodes    LOM
	Switches LOM
	Cables   LOM
}

func CalculateLOM

func CalculateLOM(net *xir.Net) TBLOM

func (TBLOM) Print

func (tbl TBLOM) Print()

type Tally

type Tally map[string]*Cost

func CalculateCost

func CalculateCost(net *xir.Net) Tally

func (Tally) Add

func (t Tally) Add(item, sku string, price float64)

func (Tally) Print

func (t Tally) Print()

type TallyItem

type TallyItem struct {
	Name string
	Cost *Cost
}

type Testbed

type Testbed interface {
	Components() ([]*Resource, []*hw.Cable)
	Provisional() map[string]map[string]interface{}
}

Jump to

Keyboard shortcuts

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