package
1.5.0
Repository: https://github.com/threefoldtech/0-core.git
Documentation: pkg.go.dev

# README

Building plugins for containers

Containers support automatic loading of plugins from the container image. When a container starts it searches the plugin search path /var/lib/corex/plugins for valid .so plugins

Plugins adds capabilities to the container coreX by plug-in handlers to function calls

Plugin structure

To create a plugin create a new go package as follows

package main

import (
	"encoding/json"
	"github.com/g8os/core0/base/plugin"
)

const (
	Version = "1.0alpha"
)

func version(input json.RawMessage) (interface{}, error) {
	return Version, nil
}

var (
	Plugin = plugin.Commands{
		"version": Version,
	}
)

func main() {
	plugin.Plugin(Plugin)
}

Building a plugin

Nothing special!

go build

Place the outputed executable binary file in your container image. Then on the root of your image place a .plugin.toml file with the following content

[plugin.ovs]
path = "/var/lib/corex/plugins/ovs-plugin"
exports = ["version"]

the exports, tells the container which methods are available for execution (in our example version)

path is the path to the plugin binary under your container image (absolute from the container image root)

Calling the plugin method.

cl = Client("hostname")
id = cl.container.create('url to image that has the plugin').get()
container = cl.container.client(id)

container.raw("ovs.version", {}) ### returns "1.0alpha"

# Functions

Plugin is the only thing u need to call from your plugin with the supported commands.

# Type aliases

No description provided by the author
No description provided by the author