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 Cmdr(cfg common.Config, f func(cm.CommanderClient) error) error
- func CogletID() string
- func CommanderClient(cfg common.Config) (*grpc.ClientConn, cm.CommanderClient, error)
- func ContainerdClient() (*containerd.Client, error)
- func CreateContainer(ctr *ContainerSpec) error
- func CreateContainerRecord(spec *ContainerSpec) error
- func CreateContainerTask(ctr *ContainerSpec) error
- func CreateIfx(netns string, ifx *EnclaveVeth, save bool) error
- func CreateInfrapodNS(name string) error
- func CreateLinks(mzInfo *MzInfo, fragments []*site.MzFragment) error
- func CreateTask(ctx context.Context, ctr containerd.Container, ns, name string) error
- func DelEnclaveBridge(spec *EnclaveSpec, ctx *rtnl.Context) error
- func DelEnclaveIptables(mzid string, spec *EnclaveSpec) error
- func Delete(obj Object) error
- func DeleteContainer(name, namespace string) error
- func DeleteContainerIfx(namespace, name string) error
- func DeleteContainerImg(name, namespace string) error
- func DeleteContainerNs(name string) error
- func DeleteContainerRecord(name, namespace string) error
- func DeleteContainerTask(name, namespace string) error
- func DeleteIfx(netns string, ifx *EnclaveVeth) error
- func DeleteInfrapodNS(name string) error
- func DeleteMzInfo(mzinfo *MzInfo) error
- func DeleteObjects(objs []Object) error
- func DeleteTask(ctx context.Context, container containerd.Container) error
- func DeleteTasks(mzid string) error
- func DestroyLinks(mzInfo *MzInfo, fragments []*site.MzFragment) error
- func DestroyNetNS(netns *NetNS) error
- func EnclaveBridge(spec *EnclaveSpec, ctx *rtnl.Context) error
- func EnclaveIptables(mzid string, spec *EnclaveSpec) error
- func EnsureEtcd(etcdp **clientv3.Client) error
- func EtcdConnect() (*clientv3.Client, error)
- func EtcdPrefix(objStr, optkey string) ([]interface{}, error)
- func EvpnAdvertiseMac(addr, router, mac string, asn, vni, vindex int) error
- func EvpnAdvertiseMulticast(addr, router string, asn, vni, vindex int) error
- func EvpnWithdrawMac(addr, router, mac string, asn, vni, vindex int) error
- func EvpnWithdrawMulticast(addr, router string, asn, vni, vindex int) error
- func Exec(etcdp **clientv3.Client, cog string, doTask func(*Task) error) error
- func ExtractConstraint(props map[string]interface{}, key string) *xir.Constraint
- func FromJSON(o Object, b []byte)
- func GenerateID() (string, error)
- func GetAllAS() (map[string]*ActionStatus, error)
- func GetAllActions() (map[string]*Action, error)
- func GetInfraEndpoint(n *xir.Node) *xir.Endpoint
- func GetIntLike(x interface{}) (int, error)
- 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 HandleIncoming(rq *cm.IncomingRequest) error
- func HandleLinkCreate(rq *cm.MzRequest) error
- func HandleLinkDestroy(rq *cm.MzRequest) error
- func HandleNodeRecycle(rq *cm.MzRequest) error
- func HandleNodeSetup(rq *cm.MzRequest) error
- func HandleStatus(rq *cm.StatusRequest) (*cm.StatusResponse, error)
- func HandleTask(etcd *etcd.Client, task *Task, lease etcd.LeaseID, doTask func(*Task) error)
- func Init()
- func InitInfranet(mzinfo *MzInfo, props map[string]interface{}) error
- func IsTxnFailed(err error) bool
- func KeepLeaseAlive(etcd *clientv3.Client, lease clientv3.LeaseID) (chan bool, error)
- func LaunchTask(task *Task, taskObjects *[]Object) error
- func LeaseTask(c *etcd.Client, t *Task) (etcd.LeaseID, error)
- func ListContainers(ctx context.Context) ([]containerd.Container, error)
- func ListNamespaces() ([]string, error)
- func LoadXIR() (*xir.Net, error)
- func MaskAction(mzid, taskid, actionid string, unmask bool) error
- func Merge2Local(devID string) (string, error)
- func NodeRecycle(mzid, instance string, fragments []*site.MzFragment) error
- func NodeSetup(mzid, instance string, fragments []*site.MzFragment) error
- func NsDefaultRoute(mzid string, spec *EnclaveSpec) error
- func PullContainerImage(namespace, image string) error
- func RUC(o Object, update func(o Object)) error
- func Read(obj Object) error
- func ReadNew(obj Object) error
- func ReadObjects(objs []Object) (int, error)
- func ReadRevision(obj Object) (revision int64, err error)
- func ReadWait(obj Object, timer *ReadTimer) error
- func RegisterCoglet(c *etcd.Client, cog string) (etcd.LeaseID, error)
- func RegisterWithCommander()
- func RevokeLease(etcd *clientv3.Client, lease clientv3.LeaseID)
- func RunObjectTx(otx ObjectTx) error
- func RunObjectTxPrefix(puts []Object, deletePrefix string) error
- func SetupContainerLo(namespace string) error
- func SvcAddress(vindex int) string
- func SvcCidr(vindex int) string
- func TeardownInfranet(mzinfo *MzInfo, props map[string]interface{}) error
- func ToJSON(o Object) string
- func Touch(obj Object) error
- func TouchObjects(objs []Object) error
- func TriageTask(etcd *clientv3.Client, t *Task, doTask func(*Task) error) error
- func TxnFailed(message string) error
- func WithCogCNI(netns string) oci.SpecOpts
- func WithCtrMounts(mounts []*ContainerMount) oci.SpecOpts
- func WithEtcd(f func(*clientv3.Client) error) error
- func WithMinEtcd(f func(*clientv3.Client) (interface{}, error)) (interface{}, error)
- func Write(obj Object, opts ...etcd.OpOption) error
- func WriteObjects(objs []Object, fresh bool, opts ...etcd.OpOption) 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 CogletInfo
- type Container
- type ContainerImageData
- type ContainerMount
- type ContainerSpec
- type CountSet
- type CtrComponent
- type DeleteContainerData
- type DeleteContainerIfxData
- type DeleteContainerNsData
- type Destination
- type EdgeInfo
- type EnclaveSpec
- type EnclaveVeth
- type Endpoint
- type EvpnInfo
- type EvpnWithdrawData
- type FoundrySetSpec
- type ImageBinding
- type ImageDefaults
- type ImageSpec
- 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 NetNS
- type NexMemberSpec
- type NexNetworkSpec
- type NodeInfo
- type NodeInfraInfo
- type NodeSpec
- type NodeState
- type NodeStateStatus
- type NodeStatus
- type NsnatSpec
- type Object
- type ObjectTx
- type Path
- type PortMode
- type PortObj
- type ReadTimer
- 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, *[]Object, error)
- func ParseAction(as *ActionStatus) (*Task, error)
- func ReadTask(file string) (*Task, *[]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 ( // FoundryImage is foundry container image URI used by the cogs FoundryImage = "docker.io/mergetb/foundry:v0.1.12" // 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 ( // NexImage is the container image used to launch nex containers in infrapods. NexImage = "docker.io/mergetb/nex:v0.5.5" // 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 (
BgpSubnetMask = "/32"
)
const ( // DefaultMountType specifies the default way in which files and directories // are mounted into containers. DefaultMountType = "bind" )
const (
// EtcdImage is the container image used for the etcd container in infrapods
EtcdImage = "docker.io/mergetb/etcd:latest"
)
const ( // RetryWait is how long to wait for various gRPC operations RetryWait = 1 * time.Second )
const (
// TxnFailedPrefix is the prefix message for all transaction failure errors.
TxnFailedPrefix = "txn failed"
)
Variables ¶
var ( GobgpdPort = flag.Int("gobgpd-port", 50051, "gobgpd listening port") BgpAddr = flag.String("bgp-addr", "10.99.0.254/32", "bgp address") BgpAS = flag.Int("bgp-as", 64799, "bgp autonomus system number") //TODO get from tbxir file instead MoaBgpAddr = flag.String("moa-bgp-addr", "10.99.0.20/32", "moa bgp address") MoaAS = flag.Int("moa-as", 67420, "moa autonomous system number") )
user flags
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"} )
var ( // ErrAlreadyWorking indicates that an action cannot be executed because a // coglet is already working on it. ErrAlreadyWorking = fmt.Errorf("cog already running") )
var ErrNotFound = fmt.Errorf("not found")
ErrNotFound means an object was not found.
var Version = "undefined"
Version contains the cogs version string
Functions ¶
func AllResourceIDs ¶ added in v0.3.1
func AllResourceIDs(net *xir.Net) []string
AllResourceIDs returns all the resource IDs in a network.
func BasicLinkConstraints ¶ added in v0.5.3
func CancelTask ¶
CancelTask removes all data attached to a task
func Cmdr ¶
Cmdr executes a function against the local commander with automatic connection lifetime management.
func CogletID ¶ added in v0.3.1
func CogletID() string
CogletID returns the ID of the running coglet.
func CommanderClient ¶
func CommanderClient(cfg common.Config) ( *grpc.ClientConn, cm.CommanderClient, error)
CommanderClient creates a Merge Commander client based on the config spec of the cogs environment.
func ContainerdClient ¶
func ContainerdClient() (*containerd.Client, error)
ContainerdClient connects to the local containerd socket interface, returning a client.
func CreateContainer ¶
func CreateContainer(ctr *ContainerSpec) error
CreateContainer creates a container based on the provided specification.
func CreateContainerRecord ¶
func CreateContainerRecord(spec *ContainerSpec) error
CreateContainerRecord stores a record of the provided container spec in the cogs datastore.
func CreateContainerTask ¶
func CreateContainerTask(ctr *ContainerSpec) error
CreateContainerTask loads the container from the provided specification and creates a task for it.
func CreateIfx ¶
func CreateIfx(netns string, ifx *EnclaveVeth, save bool) error
CreateIfx creates the specified virtual ethernet device in the provided netns.
func CreateInfrapodNS ¶
CreateInfrapodNS creates a network namespace for an infrapod.
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 CreateTask ¶
CreateTask starts a task for the specified container, e.g. it runs the container.
func DelEnclaveBridge ¶ added in v0.2.19
func DelEnclaveBridge(spec *EnclaveSpec, ctx *rtnl.Context) error
DelEnclaveBridge deletes the materialization bridge from an enclave.
func DelEnclaveIptables ¶ added in v0.2.19
func DelEnclaveIptables(mzid string, spec *EnclaveSpec) error
DelEnclaveIptables deletes double NAT rules from an enclave
func DeleteContainer ¶
DeleteContainer deletes a container.
func DeleteContainerIfx ¶
DeleteContainerIfx loads the virtual ethernet interface identified by name within the provided namespace and deletes it.
func DeleteContainerImg ¶
DeleteContainerImg deletes an image form a container namespace.
func DeleteContainerNs ¶
DeleteContainerNs deletes a container namespace.
func DeleteContainerRecord ¶
DeleteContainerRecord locates a record for for the container identified by name in the provided namespace and removes it from the cogs data store.
func DeleteContainerTask ¶
DeleteContainerTask loads the container identified by the provided name / namespace combo and deletes its associated task.
func DeleteIfx ¶
func DeleteIfx(netns string, ifx *EnclaveVeth) error
DeleteIfx removes a virtual ethernet device from a network namespace.
func DeleteInfrapodNS ¶
DeleteInfrapodNS deletes the network namespace associated with the infrapod identified by name.
func DeleteMzInfo ¶ added in v0.3.7
DeleteMzInfo deletes the mzinfo data
func DeleteObjects ¶
DeleteObjects deletes a set of objects from the datastore.
func DeleteTask ¶
func DeleteTask(ctx context.Context, container containerd.Container) error
DeleteTask deletes a container's task.
func DeleteTasks ¶ added in v0.4.2
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 EnclaveBridge ¶ added in v0.2.19
func EnclaveBridge(spec *EnclaveSpec, ctx *rtnl.Context) error
EnclaveBridge creates the materialization enclave bridge. This bridge connects the enclave to a materializtions infrastructure network.
func EnclaveIptables ¶ added in v0.2.19
func EnclaveIptables(mzid string, spec *EnclaveSpec) error
EnclaveIptables implements the double nat rules for an enclave so testbed nodes can access the internet through the infrastructure network.
func EnsureEtcd ¶
EnsureEtcd Make sure we always have an etcd connection
func EtcdConnect ¶
EtcdConnect Try to get a etcd client- assumption EtcdClient is async until used
func EtcdPrefix ¶ added in v0.5.0
EtcdPrefix is helper function for all the code calling etcd with prefix make code more DRY
func EvpnAdvertiseMac ¶
EvpnAdvertiseMac advertises the specified MAC on the specified VNI and updates associted vindex counters.
func EvpnAdvertiseMulticast ¶
EvpnAdvertiseMulticast sends out a type-3 multicast EVPN advertisement. The advertisement is sent to a GoBGP instance at the hostname specified by the router parameter. The addr parameter specifies the IP address to advertise, asn is the autonomous system number, vni is the VXLAN virtual network identifier and vindex in the Cogs virtual network index id.
func EvpnWithdrawMac ¶
EvpnWithdrawMac withdraws the specified MAC on the specified VNI and updates associated vindex counters.
func EvpnWithdrawMulticast ¶
EvpnWithdrawMulticast sends out a type-3 multicast EVPN withdraw
func Exec ¶
Exec is the primary lower half subroutine. It is designed to be executed in an infinite loop by lower half implementations.
func ExtractConstraint ¶
ExtractConstraint extracts the constraint at the specified key as an XIR constraint object.
func FromJSON ¶ added in v0.3.1
FromJSON reads reads on object from byte array encoded json. If the object is a protobuf, then protobuf is used instead.
func GenerateID ¶ added in v0.5.0
GenerateID generates an ID or Key for Stage/Action
func GetAllAS ¶ added in v0.5.0
func GetAllAS() (map[string]*ActionStatus, error)
GetAllAS all action statuses
func GetAllActions ¶ added in v0.3.10
GetAllActions all actions
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 GetIntLike ¶
GetIntLike is needed for data that gets cross-serialized and the number format is uncertain. This function works for both float64 and int underlying data types.
func GetMzidAS ¶ added in v0.5.0
func GetMzidAS(mzid, taskid string) (map[string]*ActionStatus, error)
GetMzidAS all actions associated to an mzid
func GetMzidActions ¶ added in v0.4.2
GetMzidActions all actions associated to an mzid
func GetNodeSwitch ¶ added in v0.3.5
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 ¶ added in v0.5.0
GetTaskStagesMap return all stages associated with a task
func HandleIncoming ¶
func HandleIncoming(rq *cm.IncomingRequest) error
HandleIncoming handles an incoming request from Merge. In the case of an incoming setup request a materialization infrapod is setup. In the case of an incoming teardown a materialization infrapod is torn down.
func HandleLinkCreate ¶
HandleLinkCreate handles a Merge link create request.
func HandleLinkDestroy ¶
HandleLinkDestroy handles a Merge link destroy request.
func HandleNodeRecycle ¶
HandleNodeRecycle handles a Merge node recycle request.
func HandleNodeSetup ¶
HandleNodeSetup handles a Merge node setup request.
func HandleStatus ¶
func HandleStatus(rq *cm.StatusRequest) (*cm.StatusResponse, error)
HandleStatus handles a Merge status request.
func HandleTask ¶
HandleTask attempts to execute the provided task. The datastore is updated with task state evolution as the stages and actions are executed.
func InitInfranet ¶
InitInfranet creates an enclave for an infranet and then deploys and configures the base containers within that enclave: foundry, etcd, nex
func IsTxnFailed ¶
IsTxnFailed detects if an error is a transaction failure error.
func KeepLeaseAlive ¶
KeepLeaseAlive keeps the specified lease alive indefinitely.
func LaunchTask ¶
LaunchTask launches the specified task
func LeaseTask ¶
LeaseTask attempts to take a lease out on a task. A coglet may not execute a task until it has a lease on the task.
func ListContainers ¶
func ListContainers(ctx context.Context) ([]containerd.Container, error)
ListContainers lists the containers in the specified context.
func ListNamespaces ¶
ListNamespaces lists current namespace names.
func LoadXIR ¶
func LoadXIR() (*xir.Net, error)
LoadXIR loads the testbed xir description from the file system.
func MaskAction ¶ added in v0.5.0
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 NsDefaultRoute ¶ added in v0.2.19
func NsDefaultRoute(mzid string, spec *EnclaveSpec) error
NsDefaultRoute sets up a default route in an infrapod namespace
func PullContainerImage ¶
PullContainerImage pulls the specified container image into the specified namespace.
func RUC ¶ added in v0.2.16
RUC performs a read-update-commit on the provided object using the specified update function.
func ReadNew ¶
ReadNew reads an object form the datastore, and does not throw an error if the object is not found.
func ReadObjects ¶
ReadObjects reads a set of objects from the datastore in a one-shot transaction.
func ReadRevision ¶ added in v0.5.2
ReadRevision reads an object, and returns the etcd key revision for that object
func ReadWait ¶
ReadWait attempts to read an object repeatedly until a timeout threshold is reached defined by timer. If timer is nil the defaults of 30 seconds with a retry period of 250 milliseconds is applied
func RegisterCoglet ¶
RegisterCoglet registers this process as a coglet.
func RegisterWithCommander ¶
func RegisterWithCommander()
RegisterWithCommander registers the cogs Merge driver implementation with the local commander. This function registers all nodes and links in the testbed to the cogs driver.
func RevokeLease ¶
RevokeLease revokes the specified lease.
func RunObjectTxPrefix ¶ added in v0.5.0
RunObjectTxPrefix a bastaradization of RunObjectTx, making it so put is still object array, but delete is a prefix for the txn
func SetupContainerLo ¶
SetupContainerLo sets up a loopback network interface in the specified network namespace.
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.
func ToJSON ¶ added in v0.3.1
ToJSON marshals an object to JSON form. If the object is a protobuf, protobuf is used instead.
func TouchObjects ¶ added in v0.4.3
TouchObjects updates multiple keys
func TriageTask ¶ added in v0.4.2
TriageTask is responsible for handling the actions of a task
func WithCogCNI ¶
WithCogCNI is an OCI specification operator that binds a container to a network namespace.
func WithCtrMounts ¶
func WithCtrMounts(mounts []*ContainerMount) oci.SpecOpts
WithCtrMounts is an OCI specifier that can be used on container creation to plumb in the set of provided container mount points.
func WithEtcd ¶ added in v0.2.18
WithEtcd executes a function against an etcd client with a managed connection lifetime.
func WithMinEtcd ¶ added in v0.5.0
WithMinEtcd executes a function against an etcd client with a managed connection lifetime.
Types ¶
type ASError ¶ added in v0.5.0
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 ¶ added in v0.5.0
EtcdActionErrorPrefix uses EtcdPrefix helper function and type casts back to ActionError
func ExtractASError ¶ added in v0.5.0
ExtractASError takes a json string an unmarshals it into a ASError object
func (*ASError) GetVersion ¶ added in v0.5.0
GetVersion returns the current datastore version of the object
func (*ASError) SetVersion ¶ added in v0.5.0
SetVersion sets the current datastore version of the object
type ASReady ¶ added in v0.5.0
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 ¶ added in v0.5.0
EtcdActionReadyPrefix uses EtcdPrefix helper function and type casts back to ActionReady
func ExtractASReady ¶ added in v0.5.0
ExtractASReady takes a json string an unmarshals it into a ASReady object
func (*ASReady) GetVersion ¶ added in v0.5.0
GetVersion returns the current datastore version of the object
func (*ASReady) SetVersion ¶ added in v0.5.0
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 ¶ added in v0.5.0
EtcdActionPrefix uses EtcdPrefix helper function and type casts back to Action
func ExtractAction ¶ added in v0.5.0
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 ¶ added in v0.5.0
GetVersion returns the current datastore version of the object
func (*Action) SetActionComplete ¶ added in v0.3.10
SetActionComplete sets the current action's status to complete
func (*Action) SetVersion ¶ added in v0.5.0
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 ¶ added in v0.5.0
func (a *Action) ToStatus() *ActionStatus
ToStatus creates the action status object which can then be used to read from database
type ActionStatus ¶ added in v0.3.10
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 ¶ added in v0.5.0
func EtcdActionStatusPrefix(prefix string) ([]*ActionStatus, error)
EtcdActionStatusPrefix uses EtcdPrefix helper function and type casts back to ActionStatus
func ExtractAS ¶ added in v0.4.2
func ExtractAS(asJSON string) (*ActionStatus, error)
ExtractAS extracts actionstatus
func ExtractBadAS ¶ added in v0.4.2
func ExtractBadAS(asJSON string) (*ActionStatus, error)
ExtractBadAS extracts actionstatus
func GetActionStatus ¶ added in v0.3.10
func GetActionStatus(mzid, taskid, asID string) (*ActionStatus, error)
GetActionStatus returns the actionstatus associated to an action's actionstatus uuid
func GetAllReadyAS ¶ added in v0.5.0
func GetAllReadyAS() ([]*ActionStatus, error)
GetAllReadyAS returns the list of all action statuses that are ready
func (*ActionStatus) GetVersion ¶ added in v0.3.10
func (as *ActionStatus) GetVersion() int64
GetVersion returns the current datastore version of the object
func (*ActionStatus) Key ¶ added in v0.3.10
func (as *ActionStatus) Key() string
Key returns the datastore key for this object.
func (*ActionStatus) SetVersion ¶ added in v0.3.10
func (as *ActionStatus) SetVersion(v int64)
SetVersion sets the current datastore version of the object
func (*ActionStatus) ToError ¶ added in v0.5.0
func (as *ActionStatus) ToError() *ASError
ToError returns the ASError struct
func (*ActionStatus) ToReady ¶ added in v0.5.0
func (as *ActionStatus) ToReady() *ASReady
ToReady returns the ASReady struct
func (*ActionStatus) Value ¶ added in v0.3.10
func (as *ActionStatus) Value() interface{}
Value returns this object as an interface{}
type BelugaSpec ¶
BelugaSpec encapsulates required data for beluga power control commands.
type CogletInfo ¶
type CogletInfo struct { ID string Cog string Host string Pid int // contains filtered or unexported fields }
CogletInfo contains bookkeeping information about a coglet replica.
func ListCoglets ¶
func ListCoglets() ([]*CogletInfo, error)
ListCoglets lists the coglets currently registered with the cogs datastore
func (*CogletInfo) GetVersion ¶
func (c *CogletInfo) GetVersion() int64
GetVersion gets the datastore replica version information
func (*CogletInfo) Key ¶
func (c *CogletInfo) Key() string
Key returns the datastore key for this coglet's info
func (*CogletInfo) SetVersion ¶
func (c *CogletInfo) SetVersion(v int64)
SetVersion sets the datastore replica version information
func (*CogletInfo) Value ¶
func (c *CogletInfo) Value() interface{}
Value returns this coglet as an interface object
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 CountSet ¶
type CountSet struct { Name string `json:"name"` Size int `json:"size,omitempty"` Values []int `json:"values"` Offset int `json:"offset"` // contains filtered or unexported fields }
A CountSet is a dense counter. When the counter is incremented the lowest unused index is returned. When an index is deleted, it's available for use again.
func (*CountSet) GetVersion ¶
GetVersion returns the current datastore version of the object
func (*CountSet) SetVersion ¶
SetVersion sets the current datastore version of the object
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 Destination ¶
type Destination struct {
Paths []*Path
}
Destination is a set of paths.
func (*Destination) MarshalJSON ¶
func (d *Destination) MarshalJSON() ([]byte, error)
MarshalJSON creates a JSON representation of a destination.
type EdgeInfo ¶ added in v0.3.2
type EdgeInfo struct { Resource string Mac string NodeName string NodeInterface string Multidegree bool }
EdgeInfo contains information about the node at the edge of a link
type EnclaveSpec ¶
type EnclaveSpec struct { Mzid string Vindex int ExternalIfx string ExternalGateway string ExternalSubnet string InternalGateway string NatSourceIP string Interfaces []*EnclaveVeth // 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 EvpnInfo ¶
type EvpnInfo struct { BgpIP net.IP Rd bgp.RouteDistinguisherInterface Rt bgp.ExtendedCommunityInterface }
EvpnInfo encapsulates commonly used EVPN advertisement info.
type EvpnWithdrawData ¶
type EvpnWithdrawData struct { Asn int `yaml:",omitempty"` Addr string `yaml:",omitempty"` Vindex int `yaml:",omitempty"` Vni int `yaml:",omitempty"` }
EvpnWithdrawData encapsulates information necessary to send an EVPN withdraw request
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 InterfaceMacAdvSpec ¶ added in v0.3.1
A InterfaceMacAdvSpec describes an interface to derive a type-2 EVPN (MACADV) advertisement from..
type LinkAction ¶ added in v0.3.3
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 ¶ added in v0.3.3
func (a LinkAction) Canopy() string
Canopy takes the link action and applies it to canopy links
func (LinkAction) Moa ¶ added in v0.3.3
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 ¶ added in v0.5.3
func ListLinkInfos ¶ added in v0.5.3
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 ¶ added in v0.4.3
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 ¶ added in v0.5.3
type MoaEmulationState int
const ( MoaEmuNone MoaEmulationState = iota MoaEmuInitialized MoaEmuFinalized MoaEmuStarted MoaEmuStopped )
type MoaEmulationStatus ¶ added in v0.5.3
type MoaEmulationStatus struct { Mzid string Id int State MoaEmulationState // contains filtered or unexported fields }
func (*MoaEmulationStatus) GetVersion ¶ added in v0.5.3
func (x *MoaEmulationStatus) GetVersion() int64
func (*MoaEmulationStatus) Key ¶ added in v0.5.3
func (x *MoaEmulationStatus) Key() string
func (*MoaEmulationStatus) SetVersion ¶ added in v0.5.3
func (x *MoaEmulationStatus) SetVersion(v int64)
func (*MoaEmulationStatus) Value ¶ added in v0.5.3
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 (*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 ¶ added in v0.2.20
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 NetNS ¶
NetNS is a network namespace record that tracks containers in the netns.
func (*NetNS) GetVersion ¶
GetVersion returns the current datastore version of the object
func (*NetNS) RemoveContainer ¶
RemoveContainer removes a container from a netns object
func (*NetNS) 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 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 ¶ added in v0.5.0
ListNodeInfo lists all linkinfos for a mzid
func (*NodeInfo) GetVersion ¶ added in v0.5.0
GetVersion returns the current datastore version of the object
func (*NodeInfo) SetVersion ¶ added in v0.5.0
SetVersion sets the current datastore version of the object
type NodeInfraInfo ¶
NodeInfraInfo something struct
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 ¶ added in v0.2.20
type NodeState struct { Name string Mzid string Status NodeStateStatus // contains filtered or unexported fields }
NodeState tracks the state of individual testbed nodes.
func GetNodeStatus ¶ added in v0.3.7
GetNodeStatus returns the node state of node
func (*NodeState) GetVersion ¶ added in v0.2.20
GetVersion returns the current datastore version of the object
func (*NodeState) SetVersion ¶ added in v0.2.20
SetVersion sets the current datastore version of the object
type NodeStateStatus ¶ added in v0.3.7
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 ¶ added in v0.3.3
func (s NodeStatus) String() string
type Path ¶
type Path struct { Nlri bgp.AddrPrefixInterface `json:"nlri"` Age int64 `json:"age"` Best bool `json:"best"` Attrs []bgp.PathAttributeInterface `json:"attrs"` Stale bool `json:"stale"` Withdrawal bool `json:"withdrawal,omitempty"` SourceID net.IP `json:"source-id,omitempty"` NeighborIP net.IP `json:"neighbor-ip,omitempty"` }
Path is a workaround. This for the json format compatibility. Once we update senario tests, we can remove this.
type PortObj ¶ added in v0.2.13
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 ¶ added in v0.2.13
GetVersion returns the current datastore version of the object
func (*PortObj) SetVersion ¶ added in v0.2.13
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 ¶ added in v0.5.0
EtcdStagePrefix uses EtcdPrefix helper function and type casts back to Stage
func ExtractStage ¶ added in v0.5.0
ExtractStage takes a json string an unmarshals it into a Stage object
func GetTaskStages ¶ added in v0.5.0
GetTaskStages return all stages associated with a task
func (*Stage) GetVersion ¶ added in v0.5.0
GetVersion returns the current datastore version of the object
func (*Stage) SetVersion ¶ added in v0.5.0
SetVersion sets the current datastore version of the object
type StageWithActions ¶ added in v0.5.0
StageWithActions holds the array of actions
func (*StageWithActions) AddActions ¶ added in v0.5.0
func (s *StageWithActions) AddActions(actions ...*Action)
AddActions to a StageWithAction struct
type TBVLink ¶ added in v0.3.3
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 ¶ added in v0.5.0
EtcdTaskPrefix uses EtcdPrefix helper function and type casts back to Task
func ExtractTask ¶ added in v0.4.2
ExtractTask takes a json string an unmarshals it into a Task object
func NewTask ¶
func NewTask(mzid, instance string, stages ...*StageWithActions) (*Task, *[]Object, error)
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 ¶ added in v0.5.0
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 ¶ added in v0.4.1
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 ¶ added in v0.5.2
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 ¶ added in v0.3.5
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 VtepObj ¶ added in v0.2.13
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 ¶ added in v0.2.13
GetVersion returns the current datastore version of the object
func (*VtepObj) SetVersion ¶ added in v0.2.13
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