hw

package
v0.3.9 Latest Latest
Warning

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

Go to latest
Published: Feb 16, 2023 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Gb

func Gb(value uint64) uint64

func Gbps

func Gbps(value uint64) uint64

func Kb

func Kb(value uint64) uint64

func Mb

func Mb(value uint64) uint64

func Mbps

func Mbps(value uint64) uint64

func Mhz

func Mhz(value uint64) uint64

func Tb

func Tb(value uint64) uint64

Types

type Base

type Base struct {
	Manufacturer string   `json:"manufacturer"`
	Model        string   `json:"model"`
	Tags         []string `json:"tags"`
}

func (*Base) Tag

func (b *Base) Tag(tags ...string)

type Cable

type Cable struct {
	Base
	Kind       CableKind
	Connectors [2]End
	Length     uint64 //meters
	Props      xir.Props
}

A Cable is a physical link between two hosts.

func GenericCable

func GenericCable(capacity uint64) *Cable

GenericCable creates a generic cable.

func (*Cable) Breakout

func (c *Cable) Breakout(a *Port, b []*Port)

Breakout connects a single port to multiple. This function assumes the first end is the trunk end of the cable.

func (*Cable) Connect

func (c *Cable) Connect(a, b *Port)

Connect a simple straight cable. Breakouts require more detailed attention.

func (c *Cable) Link() *xir.Link

Link creates an XIR parameterized link from a cable.

type CableKind

type CableKind uint16

CableKind defines the type of cable

const (
	// UnspecCable indicates the cable kind is not defined
	UnspecCable CableKind = iota

	// Cat5 indicates a category 5 copper cable
	Cat5

	// Cat5e indicates a category 5 enhanced copper cable
	Cat5e

	// Cat6 indicates a category 6 copper cable
	Cat6

	// DAC indicates a direct attach copper cable
	DAC

	// FiberLC indicates a fiber cable with LC type connectors
	FiberLC

	// FiberMPOTrunk indicates a fiber trunk cable with MPO connectors
	FiberMPOTrunk

	// FiberMPOBreakout indicates a fiber breakout cable with an MPO connector on
	// the trunk side.
	FiberMPOBreakout
)

type Connector

type Connector struct {
	Base
	Kind     ConnectorKind
	Protocol Layer1
	Capacity uint64

	Port *Port `json:"-" yaml:"-"`
}

A Connector couples a cable to a host.

func (*Connector) Connect

func (c *Connector) Connect(p *Port)

Connect a connector to a port.

type ConnectorKind

type ConnectorKind uint16

ConnectorKind defines the type of connector.

const (
	// UnspecConnector indicates the connector kind is not defined
	UnspecConnector ConnectorKind = iota

	// RJ45 type twisted pair connector.
	RJ45

	// SFP type modular connector.
	SFP

	// QSFP type modular connector.
	QSFP

	// SFPP indicates SFP+ type modular connector
	SFPP

	// QSFPP indicates QSFP+ type modular connector
	QSFPP

	// SFP28 type modular connector
	SFP28

	// QSFP28 type modular connector
	QSFP28

	// CXP type modular connector
	CXP

	// LC type fiber connector
	LC

	// MPO type fiber connector
	MPO
)

type Device

type Device struct {
	Base
	Procs  []Proc
	Memory []Dimm
	Nics   []Nic
	Usbs   []Usb
	Ttys   []Tty
	Disks  []Disk
}

func GenericServer

func GenericServer(ports int, portSpeed uint64) *Device

GenericServer creates a generic server with the provided number of ports and port speed.

func GenericSwitch

func GenericSwitch(radix int, portSpeed uint64) *Device

GenericSwitch creates a generic switch with the provided radix and port speed.

func (*Device) Node

func (d *Device) Node(id string) *xir.Node

type DeviceSpec

type DeviceSpec struct {
	Base
	Procs  map[string]*Procs
	Memory map[string]*Dimms
	Nics   map[string]*Nics
	Disks  map[string]*Disks
}

DeviceSpec contains a keyed set of components. The semantics behind this data structure are that they key uniquely identifies the object, and that when a new object is added with the same key the count is simply incremented. This is uesful for building device specifications that contain many of the same parts. For example consider a computer with 8 identical ram sticks, or 10 identical drives. This data structure contains the spec for just one and increments a counter.

func NewSpec

func NewSpec(d *Device) *DeviceSpec

func (*DeviceSpec) AddDisk

func (s *DeviceSpec) AddDisk(x Disk)

func (*DeviceSpec) AddMemory

func (s *DeviceSpec) AddMemory(x Dimm)

func (*DeviceSpec) AddNic

func (s *DeviceSpec) AddNic(x Nic)

func (*DeviceSpec) AddProc

func (s *DeviceSpec) AddProc(x Proc)

type Dimm

type Dimm struct {
	Base
	Capacity uint64 `json:"capacity"`
}

type Dimms

type Dimms struct {
	Count int
	Spec  Dimm
}

type Disk

type Disk struct {
	Base
	Capacity   uint64 `json:"capacity"`
	FormFactor string `json:"formfactor"`
	Interface  string `json:"interface"`
}

type Disks

type Disks struct {
	Count int
	Spec  Disk
}

type End

type End []*Connector

An End represents an end of a cable that may have 1 or many connectors (breakout cable).

func (End) Connect

func (e End) Connect(ps ...*Port) error

Connect a cable end to a set of ports

type ISA

type ISA uint

ISA enum indicates instruction set achitecture.

const (
	// X86_64 indicates Intel x86 ISA with 64 bit addresses
	X86_64 ISA = iota
)

type Layer1

type Layer1 uint

Layer 1 (physical) protocol

const (
	UnspecProtocol Layer1 = iota

	// 100 mbps
	Base100T

	// 1 gbps
	Base1000T
	Base1000X
	Base1000CX
	Base1000SX
	Base1000LX
	Base1000LX10
	Base1000EX
	Base1000BX10
	Base1000ZX

	// 10 gbps
	GBase10T
	GBase10CR
	GBase10SR
	GBase10LR
	GBase10LRM
	GBase10ER
	GBase10ZR
	GBase10LX4
	GBase10PR

	// 25 gbps
	GBase25CR
	GBase25SR
	GBase25LR
	GBase25ER

	// 40 gbps
	GBase40CR4
	GBase40SR4
	GBase40LR4
	GBase40ER4

	// 100 gbps
	GBase100CR4
	GBase100SR4
	GBase100SR10
	GBase100LR4
	GBase100ER4

	// Console
	RS232
	Uart
)

type Nic

type Nic struct {
	Base
	Ports []*Port `json:"ports"`
	Kind  string  `json:"kind"`
}

func (*Nic) GetKind

func (n *Nic) GetKind() string

type Nics

type Nics struct {
	Count int
	Spec  Nic
}

type Port

type Port struct {
	Protocol  Layer1     `json:"protocol"`
	Capacity  uint64     `json:"capacity"` //bits per second
	Mac       string     `json:"mac"`
	Connector *Connector `json:"connector"`

	Endpoint *xir.Endpoint `json:"-"`
}

type Proc

type Proc struct {
	Base
	ISA           ISA    `json:"isa"`
	Family        string `json:"family"`
	BaseFrequency uint64 `json:"basefrequency"`
	L2            uint64 `json:"l2"`
	Cores         uint64 `json:"cores"`
	Threads       uint   `json:"threads"`
	Tdp           uint   `json:"tdp"`
}

Proc represents a processor

type Procs

type Procs struct {
	Count int
	Spec  Proc
}

type Tty

type Tty struct {
	Port *Port `json:"port"`
}

type Usb

type Usb struct {
	Version UsbVersion `json:"version"`
}

type UsbVersion

type UsbVersion float32
const (
	USB1  UsbVersion = 1.0
	USB11 UsbVersion = 1.1
	USB20 UsbVersion = 2.0
	USB21 UsbVersion = 2.1
	USB30 UsbVersion = 3.0
	USB31 UsbVersion = 3.1
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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