Documentation ¶
Index ¶
- Constants
- Variables
- func GenericVMInterfaceCheck(nodeName string, eps []links.Endpoint) error
- func LoadStartupConfigFileVr(node Node, configDirName, startupCfgFName string) error
- func SetNonDefaultRuntimePerKind(kindnames []string, runtime string) error
- type Credentials
- type DefaultNode
- func (d *DefaultNode) AddEndpoint(e links.Endpoint)
- func (d *DefaultNode) AddLink(l links.Link)
- func (d *DefaultNode) AddLinkToContainer(_ context.Context, link netlink.Link, f func(ns.NetNS) error) error
- func (d *DefaultNode) CheckDeploymentConditions(ctx context.Context) error
- func (*DefaultNode) CheckInterfaceName() error
- func (d *DefaultNode) Config() *types.NodeConfig
- func (d *DefaultNode) Delete(ctx context.Context) error
- func (d *DefaultNode) DeleteNetnsSymlink() error
- func (d *DefaultNode) Deploy(ctx context.Context, _ *DeployParams) error
- func (d *DefaultNode) DeployLinks(ctx context.Context) error
- func (d *DefaultNode) ExecFunction(f func(ns.NetNS) error) error
- func (d *DefaultNode) GenerateConfig(dst, templ string) error
- func (d *DefaultNode) GetContainerName() string
- func (d *DefaultNode) GetContainers(ctx context.Context) ([]runtime.GenericContainer, error)
- func (d *DefaultNode) GetEndpoints() []links.Endpoint
- func (d *DefaultNode) GetImages(_ context.Context) map[string]string
- func (d *DefaultNode) GetLinkEndpointType() links.LinkEndpointType
- func (d *DefaultNode) GetRuntime() runtime.ContainerRuntime
- func (d *DefaultNode) GetShortName() string
- func (d *DefaultNode) GetState() state.NodeState
- func (d *DefaultNode) LoadOrGenerateCertificate(certInfra *cert.Cert, topoName string) (nodeCert *cert.Certificate, err error)
- func (*DefaultNode) PostDeploy(_ context.Context, _ *PostDeployParams) error
- func (d *DefaultNode) PreDeploy(_ context.Context, params *PreDeployParams) error
- func (d *DefaultNode) PullImage(ctx context.Context) error
- func (d *DefaultNode) RunExec(ctx context.Context, execCmd *exec.ExecCmd) (*exec.ExecResult, error)
- func (d *DefaultNode) RunExecNotWait(ctx context.Context, execCmd *exec.ExecCmd) error
- func (d *DefaultNode) SaveConfig(_ context.Context) error
- func (d *DefaultNode) SetState(s state.NodeState)
- func (d *DefaultNode) UpdateConfigWithRuntimeInfo(ctx context.Context) error
- func (d *DefaultNode) VerifyHostRequirements() error
- func (d *DefaultNode) VerifyLicenseFileExists(_ context.Context) error
- func (d *DefaultNode) VerifyStartupConfig(topoDir string) error
- func (d *DefaultNode) WithMgmtNet(mgmt *types.MgmtNet)
- func (d *DefaultNode) WithRuntime(r runtime.ContainerRuntime)
- type DeployParams
- type Initializer
- type Node
- type NodeOption
- type NodeOverwrites
- type NodeRegistry
- type NodeRegistryEntry
- type PostDeployParams
- type PreDeployParams
Constants ¶
const ( // default connection mode for vrnetlab based containers. VrDefConnMode = "tc" // keys for the map returned by GetImages. ImageKey = "image" KernelKey = "kernel" SandboxKey = "sandbox" )
Variables ¶
var ( // a map of node kinds overriding the default global runtime. NonDefaultRuntimes = map[string]string{} // ErrCommandExecError is an error returned when a command is failed to execute on a given node. ErrCommandExecError = errors.New("command execution error") // ErrContainersNotFound indicated that for a given node no containers where found in the runtime. ErrContainersNotFound = errors.New("containers not found") )
Functions ¶
func GenericVMInterfaceCheck ¶ added in v0.38.0
GenericVMInterfaceCheck checks interface names for generic VM-based nodes. These nodes could only have interfaces named ethX, where X is >0.
func LoadStartupConfigFileVr ¶ added in v0.34.0
LoadStartupConfigFileVr templates a startup-config using the file specified for VM-based nodes in the topo and puts the resulting config file by the LabDir/configDirName/startupCfgFName path.
func SetNonDefaultRuntimePerKind ¶ added in v0.27.0
SetNonDefaultRuntimePerKind sets a non default runtime for kinds that requires that (see cvx).
Types ¶
type Credentials ¶ added in v0.35.0
type Credentials struct {
// contains filtered or unexported fields
}
Credentials defines NOS SSH credentials.
func NewCredentials ¶ added in v0.35.0
func NewCredentials(username, password string) *Credentials
NewCredentials constructor for the Credentials struct.
func (*Credentials) GetPassword ¶ added in v0.35.0
func (c *Credentials) GetPassword() string
func (*Credentials) GetUsername ¶ added in v0.35.0
func (c *Credentials) GetUsername() string
func (*Credentials) Slice ¶ added in v0.35.2
func (c *Credentials) Slice() []string
Slice returns credentials as a slice.
type DefaultNode ¶ added in v0.33.0
type DefaultNode struct { Cfg *types.NodeConfig Mgmt *types.MgmtNet Runtime runtime.ContainerRuntime HostRequirements *types.HostRequirements // Indicates that the node should not start without no license file defined LicensePolicy types.LicensePolicy // OverwriteNode stores the interface used to overwrite methods defined // for DefaultNode, so that particular nodes can provide custom implementations. OverwriteNode NodeOverwrites // List of links that reference the node. Links []links.Link // List of link endpoints that are connected to the node. Endpoints []links.Endpoint // contains filtered or unexported fields }
DefaultNode implements the Node interface and is embedded to the structs of all other nodes. It has common fields and methods that every node should typically have. Nodes can override methods if needed.
func NewDefaultNode ¶ added in v0.34.0
func NewDefaultNode(n NodeOverwrites) *DefaultNode
NewDefaultNode initializes the DefaultNode structure and receives a NodeOverwrites interface which is implemented by the node struct of a particular kind. This allows DefaultNode to access fields of the specific node struct in the methods defined for DefaultNode.
func (*DefaultNode) AddEndpoint ¶ added in v0.44.0
func (d *DefaultNode) AddEndpoint(e links.Endpoint)
func (*DefaultNode) AddLink ¶ added in v0.44.0
func (d *DefaultNode) AddLink(l links.Link)
func (*DefaultNode) AddLinkToContainer ¶ added in v0.44.0
func (*DefaultNode) CheckDeploymentConditions ¶ added in v0.34.0
func (d *DefaultNode) CheckDeploymentConditions(ctx context.Context) error
CheckDeploymentConditions wraps individual functions that check if a node satisfies deployment requirements.
func (*DefaultNode) CheckInterfaceName ¶ added in v0.34.0
func (*DefaultNode) CheckInterfaceName() error
CheckInterfaceName checks if a name of the interface referenced in the topology file is in the expected range of name values. A no-op for the default node, specific nodes should implement this method.
func (*DefaultNode) Config ¶ added in v0.33.0
func (d *DefaultNode) Config() *types.NodeConfig
func (*DefaultNode) Delete ¶ added in v0.33.0
func (d *DefaultNode) Delete(ctx context.Context) error
func (*DefaultNode) DeleteNetnsSymlink ¶ added in v0.34.0
func (d *DefaultNode) DeleteNetnsSymlink() error
DeleteNetnsSymlink deletes the symlink file created for the container netns.
func (*DefaultNode) Deploy ¶ added in v0.33.0
func (d *DefaultNode) Deploy(ctx context.Context, _ *DeployParams) error
func (*DefaultNode) DeployLinks ¶ added in v0.44.0
func (d *DefaultNode) DeployLinks(ctx context.Context) error
DeployLinks deploys links associated with the node.
func (*DefaultNode) ExecFunction ¶ added in v0.44.0
func (d *DefaultNode) ExecFunction(f func(ns.NetNS) error) error
ExecFunction executes the given function in the nodes network namespace.
func (*DefaultNode) GenerateConfig ¶ added in v0.34.0
func (d *DefaultNode) GenerateConfig(dst, templ string) error
GenerateConfig generates configuration for the nodes out of the template based on the node configuration and saves the result to dst.
func (*DefaultNode) GetContainerName ¶ added in v0.35.0
func (d *DefaultNode) GetContainerName() string
GetContainerName returns the name used by the runtime to identify the container e.g. ext-container nodes use the name as defined in the topo file, while most other containers use long (prefixed) name.
func (*DefaultNode) GetContainers ¶ added in v0.34.0
func (d *DefaultNode) GetContainers(ctx context.Context) ([]runtime.GenericContainer, error)
func (*DefaultNode) GetEndpoints ¶ added in v0.44.0
func (d *DefaultNode) GetEndpoints() []links.Endpoint
func (*DefaultNode) GetImages ¶ added in v0.33.0
func (d *DefaultNode) GetImages(_ context.Context) map[string]string
func (*DefaultNode) GetLinkEndpointType ¶ added in v0.44.0
func (d *DefaultNode) GetLinkEndpointType() links.LinkEndpointType
GetLinkEndpointType returns a veth link endpoint type for default nodes. The LinkEndpointTypeVeth indicates a veth endpoint which doesn't require special handling.
func (*DefaultNode) GetRuntime ¶ added in v0.33.0
func (d *DefaultNode) GetRuntime() runtime.ContainerRuntime
func (*DefaultNode) GetShortName ¶ added in v0.44.0
func (d *DefaultNode) GetShortName() string
func (*DefaultNode) GetState ¶ added in v0.44.0
func (d *DefaultNode) GetState() state.NodeState
func (*DefaultNode) LoadOrGenerateCertificate ¶ added in v0.39.0
func (d *DefaultNode) LoadOrGenerateCertificate(certInfra *cert.Cert, topoName string) (nodeCert *cert.Certificate, err error)
LoadOrGenerateCertificate loads a certificate using a certificate storage provider provided in certInfra or generates a new one if it does not exist.
func (*DefaultNode) PostDeploy ¶ added in v0.33.0
func (*DefaultNode) PostDeploy(_ context.Context, _ *PostDeployParams) error
func (*DefaultNode) PreDeploy ¶ added in v0.33.0
func (d *DefaultNode) PreDeploy(_ context.Context, params *PreDeployParams) error
PreDeploy is a common method for all nodes that is called before the node is deployed.
func (*DefaultNode) PullImage ¶ added in v0.34.0
func (d *DefaultNode) PullImage(ctx context.Context) error
func (*DefaultNode) RunExec ¶ added in v0.34.0
func (d *DefaultNode) RunExec(ctx context.Context, execCmd *exec.ExecCmd) (*exec.ExecResult, error)
RunExec executes a single command for a node.
func (*DefaultNode) RunExecNotWait ¶ added in v0.35.0
RunExecNotWait executes a command for a node, and doesn't block waiting for the output. Should be overriden if the nodes implementation differs.
func (*DefaultNode) SaveConfig ¶ added in v0.33.0
func (d *DefaultNode) SaveConfig(_ context.Context) error
func (*DefaultNode) SetState ¶ added in v0.44.0
func (d *DefaultNode) SetState(s state.NodeState)
func (*DefaultNode) UpdateConfigWithRuntimeInfo ¶ added in v0.34.0
func (d *DefaultNode) UpdateConfigWithRuntimeInfo(ctx context.Context) error
func (*DefaultNode) VerifyHostRequirements ¶ added in v0.34.0
func (d *DefaultNode) VerifyHostRequirements() error
func (*DefaultNode) VerifyLicenseFileExists ¶ added in v0.36.0
func (d *DefaultNode) VerifyLicenseFileExists(_ context.Context) error
VerifyLicenseFileExists checks if a license file with a provided path exists.
func (*DefaultNode) VerifyStartupConfig ¶ added in v0.34.0
func (d *DefaultNode) VerifyStartupConfig(topoDir string) error
VerifyStartupConfig verifies that startup config files exists on disks.
func (*DefaultNode) WithMgmtNet ¶ added in v0.33.0
func (d *DefaultNode) WithMgmtNet(mgmt *types.MgmtNet)
func (*DefaultNode) WithRuntime ¶ added in v0.33.0
func (d *DefaultNode) WithRuntime(r runtime.ContainerRuntime)
type DeployParams ¶ added in v0.39.0
type DeployParams struct{}
DeployParams contains parameters for the Deploy function.
type Initializer ¶
type Initializer func() Node
type Node ¶
type Node interface { Init(*types.NodeConfig, ...NodeOption) error // GetContainers returns a pointer to GenericContainer that the node uses. GetContainers(ctx context.Context) ([]runtime.GenericContainer, error) DeleteNetnsSymlink() (err error) Config() *types.NodeConfig // Config returns the nodes configuration // CheckDeploymentConditions checks if node-scoped deployment conditions are met. CheckDeploymentConditions(context.Context) error PreDeploy(ctx context.Context, params *PreDeployParams) error Deploy(context.Context, *DeployParams) error // Deploy triggers the deployment of this node PostDeploy(ctx context.Context, params *PostDeployParams) error WithMgmtNet(*types.MgmtNet) // WithMgmtNet provides the management network for the node WithRuntime(runtime.ContainerRuntime) // WithRuntime provides the runtime for the node // CheckInterfaceName checks if a name of the interface referenced in the topology file is correct for this node CheckInterfaceName() error // VerifyStartupConfig checks for existence of the referenced file and maybe performs additional config checks VerifyStartupConfig(topoDir string) error SaveConfig(context.Context) error // SaveConfig saves the nodes configuration to an external file Delete(context.Context) error // Delete triggers the deletion of this node GetImages(context.Context) map[string]string // GetImages returns the images used for this kind GetRuntime() runtime.ContainerRuntime // GetRuntime returns the nodes assigned runtime GenerateConfig(dst, templ string) error // Generate the nodes configuration // UpdateConfigWithRuntimeInfo updates node config with runtime info like IP addresses assigned by runtime UpdateConfigWithRuntimeInfo(context.Context) error // RunExec execute a single command for a given node. RunExec(ctx context.Context, execCmd *exec.ExecCmd) (*exec.ExecResult, error) // Adds the given link to the Node (container). After adding the Link to the node, // the given function f is called within the Nodes namespace to setup the link. AddLinkToContainer(ctx context.Context, link netlink.Link, f func(ns.NetNS) error) error AddLink(l links.Link) AddEndpoint(e links.Endpoint) GetEndpoints() []links.Endpoint GetLinkEndpointType() links.LinkEndpointType GetShortName() string // DeployLinks deploys the links for the node. DeployLinks(ctx context.Context) error // ExecFunction executes the given function within the nodes network namespace ExecFunction(func(ns.NetNS) error) error GetState() state.NodeState }
Node is an interface that defines the behavior of a node.
type NodeOption ¶
type NodeOption func(Node)
func WithMgmtNet ¶
func WithMgmtNet(mgmt *types.MgmtNet) NodeOption
func WithRuntime ¶
func WithRuntime(r runtime.ContainerRuntime) NodeOption
type NodeOverwrites ¶ added in v0.34.0
type NodeOverwrites interface { VerifyStartupConfig(topoDir string) error CheckInterfaceName() error VerifyHostRequirements() error PullImage(ctx context.Context) error GetImages(ctx context.Context) map[string]string GetContainers(ctx context.Context) ([]runtime.GenericContainer, error) GetContainerName() string VerifyLicenseFileExists(context.Context) error }
NodeOverwrites is an interface that every node implementation implements. It is used to enable DefaultNode to get access to the particular node structs and is provided as an argument of the NewDefaultNode function. The methods defined for this interfaces are the methods that particular node has a custom implementation of.
type NodeRegistry ¶ added in v0.35.0
type NodeRegistry struct {
// contains filtered or unexported fields
}
func NewNodeRegistry ¶ added in v0.35.0
func NewNodeRegistry() *NodeRegistry
NewNodeRegistry constructs a new Registry.
func (*NodeRegistry) GetRegisteredNodeKindNames ¶ added in v0.35.0
func (r *NodeRegistry) GetRegisteredNodeKindNames() []string
GetRegisteredNodeKindNames returns a sorted slice of all the registered node kind names in the registry.
func (*NodeRegistry) Kind ¶ added in v0.35.2
func (r *NodeRegistry) Kind(kind string) *NodeRegistryEntry
func (*NodeRegistry) NewNodeOfKind ¶ added in v0.35.0
func (r *NodeRegistry) NewNodeOfKind(nodeKindName string) (Node, error)
NewNodeOfKind return a new Node of the given Node Kind.
func (*NodeRegistry) Register ¶ added in v0.35.0
func (r *NodeRegistry) Register(names []string, initf Initializer, credentials *Credentials) error
Register registers the node' init function for all provided names.
type NodeRegistryEntry ¶ added in v0.35.2
type NodeRegistryEntry struct {
// contains filtered or unexported fields
}
func (*NodeRegistryEntry) Credentials ¶ added in v0.35.2
func (e *NodeRegistryEntry) Credentials() *Credentials
Credentials returns entry's credentials.
type PostDeployParams ¶ added in v0.39.0
PostDeployParams contains parameters for the PostDeploy function.