Documentation ¶
Index ¶
- Constants
- Variables
- func AllResourceIDs(net *xir.Net) []string
- func BasicLinkConstraints(model xir.Props, divisor int) (latency, capacity string)
- func CancelTask(mzid, taskid string) error
- func CreateLinks(topo *xir.Net, mzInfo *MzInfo, fragments []*site.MzFragment) error
- func DeleteMzInfo(mzinfo *MzInfo) error
- func DeleteTasks(mzid string) error
- func DestroyLinks(topo *xir.Net, mzInfo *MzInfo, fragments []*site.MzFragment) error
- func EtcdPrefix(objStr, optkey string) ([]interface{}, error)
- func ExtractConstraint(props map[string]interface{}, key string) *xir.Constraint
- func GenerateID() (string, error)
- func GetAllAS() (map[string]*ActionStatus, error)
- func GetAllActions() (map[string]*Action, error)
- func GetInfraEndpoint(n *xir.Node) *xir.Endpoint
- func GetMzidAS(mzid, taskid string) (map[string]*ActionStatus, error)
- func GetMzidActions(mzid, taskid string) (map[string]*Action, error)
- func GetNodeSwitch(nodeEndpoint *xir.Endpoint) *xir.Endpoint
- func GetTaskStagesMap(mzid, taskid string) (map[string]*Stage, error)
- func InitInfranet(mzinfo *MzInfo, props map[string]interface{}) error
- func LaunchTask(task *Task, taskObjects *[]common.Object) error
- func MaskAction(mzid, taskid, actionid string, unmask bool) error
- func Merge2Local(net *xir.Net, devID string) (string, error)
- func NodeRecycle(topo *xir.Net, mzid, instance string, fragments []*site.MzFragment) error
- func NodeSetup(topo *xir.Net, mzid, instance string, fragments []*site.MzFragment) error
- func SetImageConfig(cfg *Images)
- func SvcAddress(vindex int) string
- func SvcCidr(vindex int) string
- func TeardownInfranet(mzinfo *MzInfo, props map[string]interface{}) error
- type ASError
- type ASReady
- type Action
- func EtcdActionPrefix(prefix string) ([]*Action, error)
- func ExtractAction(actionJSON string) (*Action, error)
- func GetAction(mzid, taskid, actionid string) (*Action, error)
- func NexCreateMembers(mzid string, endpoints []Endpoint) *Action
- func NexDeleteMembers(mzid string, endpoints []Endpoint) *Action
- func NexDeleteNetwork(name string) *Action
- func (a *Action) GetVersion() int64
- func (a *Action) Key() string
- func (a *Action) SetActionComplete() error
- func (a *Action) SetVersion(v int64)
- func (a *Action) Stage() (*Stage, error)
- func (a *Action) Task() (*Task, error)
- func (a *Action) ToStatus() *ActionStatus
- func (a *Action) Value() interface{}
- type ActionStatus
- type BelugaSpec
- type Container
- type ContainerImageData
- type ContainerMount
- type ContainerSpec
- type CtrComponent
- type DeleteContainerData
- type DeleteContainerIfxData
- type DeleteContainerNsData
- type EdgeInfo
- type EnclaveSpec
- type EnclaveVeth
- type Endpoint
- type FoundrySetSpec
- type ImageBinding
- type ImageDefaults
- type ImageSpec
- type Images
- type InfrapodImages
- type InterfaceMacAdvSpec
- type LinkAction
- type LinkInfo
- func (li *LinkInfo) AssignIDs() error
- func (li *LinkInfo) Del() error
- func (li *LinkInfo) EdgeLink(name string) *TBVLink
- func (li *LinkInfo) Edges() []*EdgeInfo
- func (l *LinkInfo) GetVersion() int64
- func (li *LinkInfo) Init() error
- func (l *LinkInfo) Key() string
- func (l *LinkInfo) SetVersion(v int64)
- func (l *LinkInfo) Value() interface{}
- type LinkKind
- type MacAdvSpec
- type MoaControlSpec
- type MoaEmulationState
- type MoaEmulationStatus
- type MzInfo
- type MzOperation
- type MzStatus
- type MzfIndex
- type NexMemberSpec
- type NexNetworkSpec
- type NodeImages
- type NodeInfo
- type NodeSpec
- type NodeState
- type NodeStateStatus
- type NodeStatus
- type NsnatSpec
- type PortMode
- type PortObj
- type Stage
- type StageWithActions
- type TBVLink
- type TargetNetwork
- type Task
- func EtcdTaskPrefix(prefix string) ([]*Task, error)
- func ExtractTask(taskJSON string) (*Task, error)
- func ListTasks(mzid string) ([]*Task, error)
- func NewTask(mzid, instance string, stages ...*StageWithActions) (*Task, *[]common.Object, error)
- func ParseAction(as *ActionStatus) (*Task, error)
- func ReadTask(file string) (*Task, *[]common.Object, error)
- func (t *Task) AddDep(id string)
- func (t *Task) Cancel() error
- func (t *Task) ClearErrors(actionstatuses map[string]*ActionStatus) error
- func (t *Task) Complete(actionstatuses map[string]*ActionStatus) (bool, error)
- func (t *Task) DepsSatisfied() ([]*ActionStatus, error)
- func (t *Task) Failed(actionstatuses map[string]*ActionStatus) ([]*ActionStatus, error)
- func (t *Task) GetVersion() int64
- func (t *Task) Incomplete(actionstatuses map[string]*ActionStatus) ([]*ActionStatus, error)
- func (t *Task) Key() string
- func (t *Task) Reset(actionstatuses map[string]*ActionStatus) error
- func (t *Task) SetComplete(actionstatuses map[string]*ActionStatus) error
- func (t *Task) SetVersion(v int64)
- func (t *Task) Value() interface{}
- func (t *Task) Wait() error
- type VLMap
- type VLMentry
- type VLinkEdge
- type Vtep
- type VtepObj
- type VtepSpec
- type VxLan
- type YamlTask
Constants ¶
const ( // HarborNet holds the DNS name of the harbor network HarborNet = "harbor.net" // HarborSvcAddr holds the service address of the harbor network HarborSvcAddr = "172.31.0.2" //XXX hardcode // HarborVindex holds the virtual network index of the harbor network HarborVindex = 2 // HarborInfraVNI holds the VXLAN VNI of the harbor infrastructure network HarborInfraVNI = 2 // HarborInfraVID holds the VLAN VID of the harbor infrastructure netwrok HarborInfraVID = 2 // HarborXpVNI holds the VXLAN VNI of the harbor experiment network HarborXpVNI = 2 )
const ( // ContainerKind is a command family that manages containers ContainerKind = "container" // LaunchCtr launches a container LaunchCtr = "launch" // PullCtrImage pulls an image for a container PullCtrImage = "pull-image" // CreateCtr creates a container CreateCtr = "create" // CreateCtrTask launches a container's task CreateCtrTask = "create-task" // CreateCtrNs creates a container namespace CreateCtrNs = "create-ns" // ConfigCtrLo creates a loopback network device for a container ConfigCtrLo = "config-lo" // CreateCtrRecord creates a container record in the database CreateCtrRecord = "create-record" // DeleteCtr deletes a container DeleteCtr = "delete" // DeleteCtrTask deletes a container task DeleteCtrTask = "delete-task" // DeleteCtrImg deletes a container image DeleteCtrImg = "delete-img" // DeleteCtrRecord deletes a contianer record from the database DeleteCtrRecord = "delete-record" // DeleteCtrNS deletes a container namespace DeleteCtrNS = "delete-ctr-ns" // NodeSetupKind is a command family that manages nodes NodeSetupKind = "NodeSetup" // NodeRecycleKind recycles a node NodeRecycleKind = "NodeRecycle" // PlumbingKind is a comand family that manages network plumbing PlumbingKind = "plumbing" // CreateEnclave creates a new enclave CreateEnclave = "create-enclave" // DestroyEnclave destroys an existing enclave DestroyEnclave = "destroy-enclave" // AdvertiseInterfaceMac advertises the mac address of an interface on an EVPN // network AdvertiseInterfaceMac = "advertise-interface-mac" // AdvertiseMac advertises a MAC on an EVPN network AdvertiseMac = "advertise-mac" // WithdrawMac withdraws a MAC from an EVPN network WithdrawMac = "withdraw-mac" // DeleteNS deletes a network namespace DeleteNS = "delete-ns" // NexKind is a command family that manages nex DHCP/DNS services NexKind = "Nex" // CreateNexNetwork creates a nex network CreateNexNetwork = "CreateNetwork" // DeleteNexNetwork deletes a nex network DeleteNexNetwork = "DeleteNetwork" // DeleteNexMembers deletes members from a nex netwok DeleteNexMembers = "DeleteMembers" // AddNexMembers adds members to a nex network AddNexMembers = "AddMembers" // CanopyKind is a command family that manages canopy virtual networks CanopyKind = "Canopy" // SetCanopyLinks sets up links on canopy enabled devices SetCanopyLinks = "SetLinks" // SetCanopyServiceVtep creates a service VTEP on canopy enabled devices SetCanopyServiceVtep = "SetServiceVtep" // RemoveCanopyServiceVtep removes a service VTEP from canopy enabled devices RemoveCanopyServiceVtep = "RemoveServiceVtep" // RemoveCanopyLinks removes links from canopy enabled devices RemoveCanopyLinks = "RemoveLinks" // MoaKind is a command family that manages Moa network emulator instances MoaKind = "Moa" // InitEmulation TODO InitEmulation = "InitEmulation" // CreateMoaLink TODO CreateMoaLink = "CreateMoaLink" // RemoveMoaLink TODO RemoveMoaLink = "RemoveMoaLink" // FinalizeEmulation TODO FinalizeEmulation = "FinalizeEmulation" // StartEmulation TODO StartEmulation = "StartEmulation" // TeardownEmulation TODO TeardownEmulation = "TeardownEmulation" // BookkeepingKind is a command family for tracking objects in the cogs // datastore BookkeepingKind = "bookkeeping" // DeleteMzinfo deletes materialization info from the cogs datastore DeleteMzinfo = "DeleteMzinfo" // SetStatus updates materialization object status in the cogs datastore SetStatus = "UpdateStatus" // MoaControlKind is a command family for configuring moactld MoaControlKind = "MoaControl" // InitMoaControl performs initiali configuration of moactld InitMoaControl = "InitMoaControl" )
const ( // InfraCanopyHost is the name of the host that infrapods enter the network // on. We currently assume this is the same host rex is running on. InfraCanopyHost = "localhost" // Svcbr is the name of the service bridge that connects an infrastructure // host to infrapod containers Svcbr = "svcbr" )
const ( // FoundryCertMountName is the name of the foundry TLS cert container mount // point FoundryCertMountName = "foundry-cert" // FoundryCertMountSource is the host location of the foundry TLS cert FoundryCertMountSource = "/etc/foundry/manage.pem" // FoundryCertMountDest is the container filesystem location of the foundry // TLS cert FoundryCertMountDest = "/etc/foundry/manage.pem" // FoundryKeyMountName is the name of the foundry TLS key container mount // point FoundryKeyMountName = "foundry-key" // FoundryKeyMountSource is the host location of the foundry TLS key FoundryKeyMountSource = "/etc/foundry/manage-key.pem" // FoundryKeyMountDest is the container filesystem location of the foundry TLS // key FoundryKeyMountDest = "/etc/foundry/manage-key.pem" // FoundryEnv is the environment variable used to pass args to foundry FoundryEnv = "FOUNDRYD_ARGS" // FoundryArgs are the args passed to the foundry infrapod container FoundryArgs = "-no-auth" )
const ( MoactldImage = "docker.io/mergetb/moactld:0.1.7" MoactldMountName = "moactld-token" MoactldMountSource = "/etc/moa/token" MoactldMountDest = "/etc/moa/token" )
const ( // NexMountName is the name of the mount used for mounting nex configs. NexMountName = "nex-config" // NexMountSource is the host location for the nex container config mount. NexMountSource = "/etc/cogs/nex.yml" // NexMountDest is the container location for the nex container config mount. NexMountDest = "/etc/nex/nex.yml" // NexDomainEnv is the nex domain name environment variable key. NexDomainEnv = "DOMAIN" )
const ( // InfrapodMznIfx is the name of the materialization interface in an infrapod InfrapodMznIfx = "ceth0" // InfrapodSvcIfx is the name of the service interface in an infrapod InfrapodSvcIfx = "ceth1" // DefaultInternalGateway is the infrapod default internal gateway DefaultInternalGateway = "172.30.0.1" // DefaultInternalGatewayCIDR is the infrapod default internal gateway CIDR DefaultInternalGatewayCIDR = "172.30.0.1/16" // DefaultServiceGateway is the default service gateway for an infrapod DefaultServiceGateway = "172.31.0.1" // HarborVni is the VXLAN VNI used for the harbor HarborVni = 2 // HarborVid is the VLAN VID used for the harbor HarborVid = 2 // MaxSystemVindex is the maximum value that can be used for system-level // virtual network indices. MaxSystemVindex = 100 // VindexKey is the datastore key used to access the vindex counter VindexKey = "vindex" // InfraVniKey is the datastore key used to access the infrapod VXLAN VNI // counter InfraVniKey = "ivni" // InfraVidKey is the datastore key used to access the infrapod VLAN VID // counter InfraVidKey = "ivid" // XpVniKey is the datastore key used to access the experiment VXLAN VNI // counter XpVniKey = "xvni" // XpVidKey is the datastore key used to access the experiment VLAN VID // counter XpVidKey = "xvid" // HarborControlAddr is the address used to access harbor infrapod containers // from the host HarborControlAddr = "172.31.0.2" // HarborMzid is the materialization name of the harbor HarborMzid = "harbor.mergetb.io" //TODO XXX change to harbor.mergetb.io // MoaInterfaceType defines the type of interface moa is to use MoaInterfaceType = "xdpinterface" // MoaXDPMode defines the express data path mode Moa should use MoaXDPMode = "skb" )
const ( // TimeFormat is the format used by the cogs in logs. TimeFormat = "2 Jan 06 15:04:05.00 MST" // IDAlphabet is the alphabet used for task UUIDs IDAlphabet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_@" )
const ( // DefaultMountType specifies the default way in which files and directories // are mounted into containers. DefaultMountType = "bind" )
const ( // RetryWait is how long to wait for various gRPC operations RetryWait = 1 * time.Second )
Variables ¶
var ( // ErrASMapEmpty is the error returned by functions when given an empty map // of actions ErrASMapEmpty error = fmt.Errorf("empty action status map") // ErrASMapNil is the error returned by functions when given a nil map of // actions ErrASMapNil error = fmt.Errorf("nil action status map") )
var ( // DefaultMountOptions specifies the default options for file and directory // mounts for infrapod containers. DefaultMountOptions = []string{"rbind", "ro"} )
Functions ¶
func AllResourceIDs ¶
func AllResourceIDs(net *xir.Net) []string
AllResourceIDs returns all the resource IDs in a network.
func BasicLinkConstraints ¶
func CancelTask ¶
CancelTask removes all data attached to a task
func CreateLinks ¶
CreateLinks creates a set of virtual links for the specified materialization ID given a set of materialization fragments that are link specs.
func DeleteTasks ¶
DeleteTasks removes everything related to the mzid (tasks, stages, actions, etc)
func DestroyLinks ¶
DestroyLinks destroys a set of virtual links for the specofied materialization ID given a set of materialization fragments that are links specs.
func EtcdPrefix ¶
EtcdPrefix is helper function for all the code calling etcd with prefix make code more DRY
func ExtractConstraint ¶
ExtractConstraint extracts the constraint at the specified key as an XIR constraint object.
func GenerateID ¶
GenerateID generates an ID or Key for Stage/Action
func GetInfraEndpoint ¶
func GetInfraEndpoint(n *xir.Node) *xir.Endpoint
GetInfraEndpoint tries to find an endpoint from the specified node on an infrastructure network. If one can not be found nil is returned.
func GetMzidAS ¶
func GetMzidAS(mzid, taskid string) (map[string]*ActionStatus, error)
GetMzidAS all actions associated to an mzid
func GetMzidActions ¶
GetMzidActions all actions associated to an mzid
func GetNodeSwitch ¶
func GetNodeSwitch(nodeEndpoint *xir.Endpoint) *xir.Endpoint
GetNodeSwitch gets the switch attached to a node. If no leaf switch is attached to the node, nil is returned.
func GetTaskStagesMap ¶
GetTaskStagesMap return all stages associated with a task
func InitInfranet ¶
InitInfranet creates an enclave for an infranet and then deploys and configures the base containers within that enclave: foundry, etcd, nex
func LaunchTask ¶
LaunchTask launches the specified task
func MaskAction ¶
MaskAction masks any error condition on an action. This makes a failed task appear complete from the perspective of dependency resolution.
func Merge2Local ¶
Merge2Local transforms a Merge node ID into a node label
func NodeRecycle ¶
NodeRecycle launches a set of tasks that collectively recycle a node.
func SetImageConfig ¶ added in v0.6.10
func SetImageConfig(cfg *Images)
func SvcAddress ¶
SvcAddress returns the IP address of a CIDR given the associated virtual network index.
func TeardownInfranet ¶
TeardownInfranet tears down an infrapod. This deletes the network enclave and the containers within the enclave.
Types ¶
type ASError ¶
type ASError struct { Mzid string `yaml:",omitempty"` Taskid string `yaml:",omitempty"` Actionid string `yaml:",omitempty"` // contains filtered or unexported fields }
ASError is a struct that fits within our storage achitecture for managing actions in the error queue
func EtcdActionErrorPrefix ¶
EtcdActionErrorPrefix uses EtcdPrefix helper function and type casts back to ActionError
func ExtractASError ¶
ExtractASError takes a json string an unmarshals it into a ASError object
func (*ASError) GetVersion ¶
GetVersion returns the current datastore version of the object
func (*ASError) SetVersion ¶
SetVersion sets the current datastore version of the object
type ASReady ¶
type ASReady struct { Mzid string `yaml:",omitempty"` Taskid string `yaml:",omitempty"` Actionid string `yaml:",omitempty"` // contains filtered or unexported fields }
ASReady is a struct that fits within our storage achitecture for managing actions in the incomplete queue
func EtcdActionReadyPrefix ¶
EtcdActionReadyPrefix uses EtcdPrefix helper function and type casts back to ActionReady
func ExtractASReady ¶
ExtractASReady takes a json string an unmarshals it into a ASReady object
func (*ASReady) GetVersion ¶
GetVersion returns the current datastore version of the object
func (*ASReady) SetVersion ¶
SetVersion sets the current datastore version of the object
type Action ¶
type Action struct { Kind string `yaml:",omitempty"` Mzid string `yaml:",omitempty"` MzOp MzOperation `yaml:",omitempty"` MzInstance string `yaml:",omitempty"` Action string `yaml:",omitempty"` Data interface{} `yaml:",omitempty"` ID string `yaml:",omitempty"` Taskid string `yaml:",omitempty"` Stageid string `yaml:",omitempty"` // contains filtered or unexported fields }
An Action is the basic unit of coglet execution. It defines a single task that a coglet thread executes until completion or failure. TODO: Remove from Etcd
func EtcdActionPrefix ¶
EtcdActionPrefix uses EtcdPrefix helper function and type casts back to Action
func ExtractAction ¶
ExtractAction extracts actionstatus
func NexCreateMembers ¶
NexCreateMembers adds the specified endpoints as nex DHCP/DNS members on the network identified by the provided mzid.
func NexDeleteMembers ¶
NexDeleteMembers deletes the specified endpoints from the nex DHCP/DNS network identified by the provided mzid.
func NexDeleteNetwork ¶
NexDeleteNetwork deletes the specified nex DHCP/DNS network by name.
func (*Action) GetVersion ¶
GetVersion returns the current datastore version of the object
func (*Action) SetActionComplete ¶
SetActionComplete sets the current action's status to complete
func (*Action) SetVersion ¶
SetVersion sets the current datastore version of the object
func (*Action) Task ¶
Task returns the parent task of an action or an error if unable to return the task
func (*Action) ToStatus ¶
func (a *Action) ToStatus() *ActionStatus
ToStatus creates the action status object which can then be used to read from database
type ActionStatus ¶
type ActionStatus struct { Mzid string `yaml:",omitempty"` Taskid string `yaml:",omitempty"` ID string `yaml:",omitempty"` Complete bool `yaml:",omitempty"` Error *string `yaml:",omitempty"` Masked bool `yaml:",omitempty"` // contains filtered or unexported fields }
ActionStatus is the status of an action. Removed from the task to reduce writes to the task object
func EtcdActionStatusPrefix ¶
func EtcdActionStatusPrefix(prefix string) ([]*ActionStatus, error)
EtcdActionStatusPrefix uses EtcdPrefix helper function and type casts back to ActionStatus
func ExtractAS ¶
func ExtractAS(asJSON string) (*ActionStatus, error)
ExtractAS extracts actionstatus
func ExtractBadAS ¶
func ExtractBadAS(asJSON string) (*ActionStatus, error)
ExtractBadAS extracts actionstatus
func GetActionStatus ¶
func GetActionStatus(mzid, taskid, asID string) (*ActionStatus, error)
GetActionStatus returns the actionstatus associated to an action's actionstatus uuid
func GetAllReadyAS ¶
func GetAllReadyAS() ([]*ActionStatus, error)
GetAllReadyAS returns the list of all action statuses that are ready
func (*ActionStatus) GetVersion ¶
func (as *ActionStatus) GetVersion() int64
GetVersion returns the current datastore version of the object
func (*ActionStatus) Key ¶
func (as *ActionStatus) Key() string
Key returns the datastore key for this object.
func (*ActionStatus) SetVersion ¶
func (as *ActionStatus) SetVersion(v int64)
SetVersion sets the current datastore version of the object
func (*ActionStatus) ToError ¶
func (as *ActionStatus) ToError() *ASError
ToError returns the ASError struct
func (*ActionStatus) ToReady ¶
func (as *ActionStatus) ToReady() *ASReady
ToReady returns the ASReady struct
func (*ActionStatus) Value ¶
func (as *ActionStatus) Value() interface{}
Value returns this object as an interface{}
type BelugaSpec ¶
BelugaSpec encapsulates required data for beluga power control commands.
type Container ¶
type Container struct { Name string Namespace string Vindex int Image string // contains filtered or unexported fields }
Container tracks container parameters in the datastore
func (*Container) GetVersion ¶
GetVersion returns the current datastore version of the object
func (*Container) SetVersion ¶
SetVersion sets the current datastore version of the object
type ContainerImageData ¶
ContainerImageData encapsulates data needed to pull or remove a container image.
type ContainerMount ¶
type ContainerMount struct { Name string specs.Mount `mapstructure:",squash" yaml:",inline"` CtrComponent `mapstructure:",squash" yaml:",inline"` // contains filtered or unexported fields }
ContainerMount tracks information about container mounts.
func (*ContainerMount) GetVersion ¶
func (x *ContainerMount) GetVersion() int64
GetVersion returns the current datastore version of the object
func (*ContainerMount) Key ¶
func (x *ContainerMount) Key() string
Key returns the datastore key for this object.
func (*ContainerMount) SetVersion ¶
func (x *ContainerMount) SetVersion(v int64)
SetVersion sets the current datastore version of the object
func (*ContainerMount) Value ¶
func (x *ContainerMount) Value() interface{}
Value returns this object as an interface{}
type ContainerSpec ¶
type ContainerSpec struct { Container `mapstructure:",squash" yaml:",inline"` //Interfaces []*ContainerInterface Mounts []*ContainerMount Environment map[string]string // contains filtered or unexported fields }
ContainerSpec tracks information about containers.
func (*ContainerSpec) Env ¶
func (ctr *ContainerSpec) Env() []string
Env returns the environment of a container spec as a list of strings.
type CtrComponent ¶
type CtrComponent struct { CtrName string `yaml:",omitempty"` CtrNamespace string `yaml:",omitempty"` }
CtrComponent tracks low level containerd properties
type DeleteContainerData ¶
DeleteContainerData encapsulates information needed to delete a container.
type DeleteContainerIfxData ¶
DeleteContainerIfxData encapsulates data needed to delete a container interface.
type DeleteContainerNsData ¶
type DeleteContainerNsData struct {
Name string
}
DeleteContainerNsData encapsulates data needed to delete a container namespace.
type EdgeInfo ¶
type EdgeInfo struct { Resource string `json:",omitempty"` Mac string `json:",omitempty"` NodeName string `json:",omitempty"` NodeInterface string `json:",omitempty"` Multidegree bool `json:",omitempty"` }
EdgeInfo contains information about the node at the edge of a link
type EnclaveSpec ¶
type EnclaveSpec struct { Mzid string Vindex int Interfaces []*EnclaveVeth SvcAddress string // contains filtered or unexported fields }
An EnclaveSpec describes a network enclave in which an infrapod lives.
func (*EnclaveSpec) GetVersion ¶
func (e *EnclaveSpec) GetVersion() int64
GetVersion returns the current datastore version of the object
func (*EnclaveSpec) Key ¶
func (e *EnclaveSpec) Key() string
Key returns the datastore key for this object.
func (*EnclaveSpec) SetVersion ¶
func (e *EnclaveSpec) SetVersion(v int64)
SetVersion sets the current datastore version of the object
func (*EnclaveSpec) Value ¶
func (e *EnclaveSpec) Value() interface{}
Value returns this object as an interface{}
type EnclaveVeth ¶
type EnclaveVeth struct { Inner string Outer string Vni int `yaml:",omitempty"` Vid int `yaml:",omitempty"` Vindex int `yaml:",omitempty"` EvpnAdvertise bool `yaml:",omitempty"` Bridge string Address string HostMac string `yaml:",omitempty"` CtrMac string `yaml:",omitempty"` // contains filtered or unexported fields }
EnclaveVeth tracks information about virtual ethernet interfaces for infrapod enclaves.
func (*EnclaveVeth) GetVersion ¶
func (x *EnclaveVeth) GetVersion() int64
GetVersion returns the current datastore version of the object
func (*EnclaveVeth) Key ¶
func (x *EnclaveVeth) Key() string
Key returns the datastore key for this object.
func (*EnclaveVeth) SetVersion ¶
func (x *EnclaveVeth) SetVersion(v int64)
SetVersion sets the current datastore version of the object
func (*EnclaveVeth) Value ¶
func (x *EnclaveVeth) Value() interface{}
Value returns this object as an interface{}
type Endpoint ¶
type Endpoint struct { // The node being connected Node string // The interface being connected Interface string // Whether or not the interface multiplexes multiple virtual links Multidegree bool }
An Endpoint describes how a testbed node connects to a virtual network.
type FoundrySetSpec ¶
type FoundrySetSpec struct { Endpoint string Machines []*foundry.MachineConfig }
A FoundrySetSpec encapsulates the information needed to configure a set of machines using foundry.
type ImageBinding ¶
type ImageBinding struct { Image *sled.Image // image storage information Kexec *sled.Kexec // local kexec after initial sled write }
An ImageBinding contains the required information to bind an image to a node using sled.
type ImageDefaults ¶
type ImageDefaults struct { Image sled.Image // contains filtered or unexported fields }
ImageDefaults contains default image information for a node type.
func (*ImageDefaults) GetVersion ¶
func (d *ImageDefaults) GetVersion() int64
GetVersion returns the current datastore version of the object
func (*ImageDefaults) Key ¶
func (d *ImageDefaults) Key() string
Key returns the datastore key for this object.
func (*ImageDefaults) SetVersion ¶
func (d *ImageDefaults) SetVersion(v int64)
SetVersion sets the current datastore version of the object
func (*ImageDefaults) Value ¶
func (d *ImageDefaults) Value() interface{}
Value returns this object as an interface{}
type ImageSpec ¶
type ImageSpec struct { Endpoint string // location of sledb List []ImageBinding NoVerify bool }
An ImageSpec contains all the information needed to create a set of image bindings through sled.
type Images ¶ added in v0.7.0
type Images struct { Node *NodeImages Infrapod *InfrapodImages }
type InfrapodImages ¶ added in v0.6.10
type InterfaceMacAdvSpec ¶
A InterfaceMacAdvSpec describes an interface to derive a type-2 EVPN (MACADV) advertisement from..
type LinkAction ¶
type LinkAction int
A LinkAction is a Create or Destroy Link
const ( // CreateLink creates links CreateLink LinkAction = iota // DestroyLink creates links DestroyLink )
func (LinkAction) Canopy ¶
func (a LinkAction) Canopy() string
Canopy takes the link action and applies it to canopy links
func (LinkAction) Moa ¶
func (a LinkAction) Moa() string
Moa takes the link action and applies it to moa links
type LinkInfo ¶
type LinkInfo struct { Mzid string Vindex int Kind LinkKind XpID string // virtual link identifier from merge Props xir.Props // User defined link properties TBVLinks []*TBVLink // A list of testbed virtual links Core []string // Non-edge link resource ids // contains filtered or unexported fields }
LinkInfo maps a virtual link id in the experiment space e.g., an identifier for a link in an experiment onto a set of virtual and physical testbed links. Core links are physical testbed links that interconnect edge links.
func GenLinkInfo ¶
func ListLinkInfos ¶
ListLinkInfo lists all linkinfos for a mzid
func (*LinkInfo) GetVersion ¶
GetVersion returns the current datastore version of the object
func (*LinkInfo) SetVersion ¶
SetVersion sets the current datastore version of the object
type MacAdvSpec ¶
A MacAdvSpec describes a type-2 EVPN (MACADV) advertisement.
type MoaControlSpec ¶
type MoaControlSpec struct { // where moactld is running ControlHost string // which moa manager to talk to EmulationHost string }
MoaControlSpec contains information needed by rex to initialize moactld for an experiment
type MoaEmulationState ¶
type MoaEmulationState int
const ( MoaEmuNone MoaEmulationState = iota MoaEmuInitialized MoaEmuFinalized MoaEmuStarted MoaEmuStopped )
type MoaEmulationStatus ¶
type MoaEmulationStatus struct { Mzid string Id int State MoaEmulationState // contains filtered or unexported fields }
func (*MoaEmulationStatus) GetVersion ¶
func (x *MoaEmulationStatus) GetVersion() int64
func (*MoaEmulationStatus) Key ¶
func (x *MoaEmulationStatus) Key() string
func (*MoaEmulationStatus) SetVersion ¶
func (x *MoaEmulationStatus) SetVersion(v int64)
func (*MoaEmulationStatus) Value ¶
func (x *MoaEmulationStatus) Value() interface{}
type MzInfo ¶
type MzInfo struct { Mzid string Instance string Vindex int Vni int Vid int Status MzStatus IncomingTaskID string TeardownTaskID string NodeSetupTaskID string NodeRecycleTaskID string LinkCreateTaskID string LinkDestroyTaskID string // contains filtered or unexported fields }
MzInfo contains various information about a materialization
func ListMaterializations ¶
ListMaterializations lists all materializations with the given prefix.
func MzInfoRead ¶
func MzInfoWait ¶
func (*MzInfo) GetVersion ¶
GetVersion returns the current datastore version of the object
func (*MzInfo) SetVersion ¶
SetVersion sets the current datastore version of the object
type MzOperation ¶
type MzOperation string
MzOperation indicates the type of a materialization operation an action is a part of.
const ( // MzOutgoing indicates a dematerialization process. MzOutgoing MzOperation = "outgoing" // MzIncoming indicates a materialization process. MzIncoming MzOperation = "incoming" // MzMod indicates that a materialization is being modified. MzMod MzOperation = "mod" )
type MzStatus ¶
type MzStatus int
MzStatus indicates the overal status of a materialization
const ( // MzNone indicates that there is no materialization status MzNone MzStatus = iota // Materializing indicates that a materialization is in progress Materializing // Active indicates that all materialization tasks have finished Active // Dematerializing indicates a dematerialization is in progress Dematerializing )
type MzfIndex ¶
type MzfIndex struct { Resource string Fragment *site.MzFragment // contains filtered or unexported fields }
MzfIndex tracks materialization fragments.
func (*MzfIndex) GetVersion ¶
GetVersion returns the current datastore version of the object
func (*MzfIndex) SetVersion ¶
SetVersion sets the current datastore version of the object
type NexMemberSpec ¶
type NexMemberSpec struct { nex.MemberList `mapstructure:",squash" yaml:",inline"` Endpoint string }
NexMemberSpec is a wrapper around a nex member list that adds an endpoint at which the nex service may be reached.
type NexNetworkSpec ¶
type NexNetworkSpec struct { // Core Nex data Network nex.Network // Nex endpoint address Endpoint string }
NexNetworkSpec is a wrapper around a nex network specification that adds an endpoint at which the nex service may be reached.
type NodeImages ¶ added in v0.7.0
type NodeImages struct {
Default string
}
type NodeInfo ¶
type NodeInfo struct { Mzid string // key under mzinfo Machine string // key under nodes XpName string Image *ImageBinding Config *foundry.MachineConfig Nex *nex.Member // contains filtered or unexported fields }
NodeInfo contains various information about a testbed node
func ListNodeInfo ¶
ListNodeInfo lists all linkinfos for a mzid
func (*NodeInfo) GetVersion ¶
GetVersion returns the current datastore version of the object
func (*NodeInfo) SetVersion ¶
SetVersion sets the current datastore version of the object
type NodeSpec ¶
type NodeSpec struct { Resource string Xname string Mac string Interface string Multidegree bool SvcEndpoint string Infranet *TargetNetwork Binding *ImageBinding Config *foundry.MachineConfig }
A NodeSpec encapsulates the data needed to provision or recycle a testbed node.
type NodeState ¶
type NodeState struct { Name string Mzid string Status NodeStateStatus // contains filtered or unexported fields }
NodeState tracks the state of individual testbed nodes.
func GetNodeStatus ¶
GetNodeStatus returns the node state of node
func (*NodeState) GetVersion ¶
GetVersion returns the current datastore version of the object
func (*NodeState) SetVersion ¶
SetVersion sets the current datastore version of the object
type NodeStateStatus ¶
type NodeStateStatus struct { Current NodeStatus Target NodeStatus }
NodeStateStatus tracks the current and target state for a testbed node
type NodeStatus ¶
type NodeStatus int
NodeStatus indicates the state of a node.
const ( // NodeNone indicates that there is no available state for a node NodeNone NodeStatus = iota // Setup indicates a node is being setup Setup // Recycling indicates a node is being recycled Recycling // Ready indicates a node has been setup and is ready for use Ready // Clean indicates a node has been recycled Clean )
func (NodeStatus) String ¶
func (s NodeStatus) String() string
type PortObj ¶
type PortObj struct { Mzid string Host string Port string Mode PortMode Vids []int Up bool // contains filtered or unexported fields }
PortObj tracks various switch port properties.
func (*PortObj) GetVersion ¶
GetVersion returns the current datastore version of the object
func (*PortObj) SetVersion ¶
SetVersion sets the current datastore version of the object
type Stage ¶
type Stage struct { Mzid string `yaml:",omitempty"` Taskid string `yaml:",omitempty"` ID string `yaml:",omitempty"` Order int `yaml:",omitempty"` // instead of linked list implementation, we just know where we should be Actions []string `yaml:",omitempty"` // contains filtered or unexported fields }
A Stage is a collection of actions. Actions within a stage are executed concurrently.
func EtcdStagePrefix ¶
EtcdStagePrefix uses EtcdPrefix helper function and type casts back to Stage
func ExtractStage ¶
ExtractStage takes a json string an unmarshals it into a Stage object
func GetTaskStages ¶
GetTaskStages return all stages associated with a task
func (*Stage) GetVersion ¶
GetVersion returns the current datastore version of the object
func (*Stage) SetVersion ¶
SetVersion sets the current datastore version of the object
type StageWithActions ¶
StageWithActions holds the array of actions
func (*StageWithActions) AddActions ¶
func (s *StageWithActions) AddActions(actions ...*Action)
AddActions to a StageWithAction struct
type TBVLink ¶
TBVLink represents a virtual testbed link in terms of the underlying physical links it's constructed from. Edge links are physical testbed links that connect directly to end-hosts.
type TargetNetwork ¶
TargetNetwork describes the infrastructure network a testbed node will attach to.
type Task ¶
type Task struct { Mzid string `yaml:",omitempty"` ID string `yaml:",omitempty"` Instance string `yaml:",omitempty"` Stages []string `yaml:",omitempty"` Deps []string `yaml:",omitempty"` Timestamp string `yaml:",omitempty"` // contains filtered or unexported fields }
A Task is a collecion of stages that are executed in sequence by a coglet.
func EtcdTaskPrefix ¶
EtcdTaskPrefix uses EtcdPrefix helper function and type casts back to Task
func ExtractTask ¶
ExtractTask takes a json string an unmarshals it into a Task object
func NewTask ¶
NewTask takes an mzid, and stages and returns the new task It will also write out all the stages and actions to etcd and is responsible for initializing both stages and actions
func ParseAction ¶
func ParseAction(as *ActionStatus) (*Task, error)
ParseAction when action is found, execute corresponding task
func (*Task) AddDep ¶
AddDep adds a dependency to a task. The id argument must be a UUID for an existing task. Once added, this task will be ignored by coglets until the specified UUID has completed successfully, or is masked.
func (*Task) Cancel ¶
Cancel cancels the tasks with the specified prefix as well as the attached action statuses
func (*Task) ClearErrors ¶
func (t *Task) ClearErrors(actionstatuses map[string]*ActionStatus) error
ClearErrors clears all errors from the underlying actions in a task. This means that it will become elegible for execution by a coglet again. this function assumes GetMzidAS(task.Mzid, task.ID) as input
func (*Task) Complete ¶
func (t *Task) Complete(actionstatuses map[string]*ActionStatus) (bool, error)
Complete returns if the task is complete. A task is considered complete if all its actions are either complete or masked. this function assumes GetMzidAS(task.Mzid, task.ID) as input
func (*Task) DepsSatisfied ¶
func (t *Task) DepsSatisfied() ([]*ActionStatus, error)
DepsSatisfied calculates if all dependencies of a task are satisfied it returns those statuses which are not, or empty if there are none this function assumes GetMzidAS(task.Mzid, task.ID) as input
func (*Task) Failed ¶
func (t *Task) Failed(actionstatuses map[string]*ActionStatus) ([]*ActionStatus, error)
Failed returns if a task has failed. this function assumes GetMzidAS(task.Mzid, task.ID) as input
func (*Task) GetVersion ¶
GetVersion returns the current datastore version of the object
func (*Task) Incomplete ¶
func (t *Task) Incomplete(actionstatuses map[string]*ActionStatus) ([]*ActionStatus, error)
Incomplete returns all incomplete actionstatuses this function assumes GetMzidAS(task.Mzid, task.ID) as input
func (*Task) Reset ¶
func (t *Task) Reset(actionstatuses map[string]*ActionStatus) error
Reset marks all actions in a task as incomplete and clears any errors. this function assumes GetMzidAS(task.Mzid, task.ID) as input
func (*Task) SetComplete ¶
func (t *Task) SetComplete(actionstatuses map[string]*ActionStatus) error
SetComplete sets all the action statuses for a task to complete this function assumes GetMzidAS(task.Mzid, task.ID) as input
func (*Task) SetVersion ¶
SetVersion sets the current datastore version of the object
type VLMap ¶
type VLMap struct { Mzid string Entries map[int]*VLMentry // contains filtered or unexported fields }
VLMap maps virtual link identifers to VLMentries
func (*VLMap) GetVersion ¶
GetVersion returns the current datastore version of the object
func (*VLMap) SetVersion ¶
SetVersion sets the current datastore version of the object
type Vtep ¶
type Vtep struct { //Node string XXX should alwyas be the host rex is running on //Dev string XXX rex-local configuration Bridge string }
Vtep encapsulates required data for canopy VTEP commands.
type VtepObj ¶
type VtepObj struct { Mzid string Host string Name string Vni int Vid int // contains filtered or unexported fields }
VtepObj tracks VTEP parameters in the datastore
func (*VtepObj) GetVersion ¶
GetVersion returns the current datastore version of the object
func (*VtepObj) SetVersion ¶
SetVersion sets the current datastore version of the object
type VxLan ¶
VxLan Record
func (*VxLan) GetVersion ¶
GetVersion returns the current datastore version of the object
func (*VxLan) RemoveInterface ¶
RemoveInterface removes an interface from a VxLan record
func (*VxLan) SetVersion ¶
SetVersion sets the current datastore version of the object