Skip to content
Snippets Groups Projects
Commit 8694ce92 authored by Malte Bauch's avatar Malte Bauch
Browse files

Plugin registry stores plugin information to file

parent ecf73f50
No related branches found
No related tags found
1 merge request!690Add a file storage to plugin registry
......@@ -55,7 +55,6 @@ require (
github.com/mattn/go-isatty v0.0.19 // indirect
github.com/mattn/go-runewidth v0.0.15 // indirect
github.com/mattn/go-tty v0.0.3 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/montanaflynn/stats v0.7.1 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
......@@ -73,7 +72,6 @@ require (
github.com/sethvargo/go-retry v0.2.4
github.com/spf13/afero v1.11.0 // indirect
github.com/spf13/cast v1.6.0 // indirect
github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
github.com/xdg-go/scram v1.1.2 // indirect
......@@ -94,6 +92,7 @@ require (
github.com/hashicorp/go-multierror v1.1.1
github.com/hashicorp/go-plugin v1.4.10
github.com/lesismal/nbio v1.3.21
golang.org/x/mod v0.14.0
google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917
)
......@@ -101,7 +100,6 @@ require (
atomicgo.dev/cursor v0.2.0 // indirect
atomicgo.dev/keyboard v0.2.9 // indirect
atomicgo.dev/schedule v0.1.0 // indirect
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9 // indirect
github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
github.com/containerd/console v1.0.3 // indirect
github.com/fatih/color v1.15.0 // indirect
......
This diff is collapsed.
......@@ -9,13 +9,15 @@ import (
pb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/plugin-registry"
"code.fbi.h-da.de/danet/gosdn/controller/interfaces/plugin"
"code.fbi.h-da.de/danet/gosdn/controller/nucleus/util"
"github.com/google/uuid"
"golang.org/x/mod/sumdb/dirhash"
"google.golang.org/grpc"
)
const (
pluginFilePath = "plugins"
pluginName = "bundled_plugin.zip"
pluginFilePath = "plugins"
pluginStorePath = "plugin-store.json"
)
func main() {
......@@ -41,37 +43,45 @@ func main() {
// after reboot. Therefore it would make sense to use a database. For a simple
// prototype this is currently hardcoded.
func registerPlugins() *PluginRegistry {
files, err := os.ReadDir(pluginFilePath)
dirs, err := os.ReadDir(pluginFilePath)
if err != nil {
panic(err)
}
pr := &PluginRegistry{}
pluginStore := NewStore(pluginStorePath)
for i, file := range files {
fmt.Printf("File %+v\n", file)
for _, dir := range dirs {
fmt.Printf("File %+v\n", dir)
if file.IsDir() {
manifest, err := plugin.ReadManifestFromFile(filepath.Join(pluginFilePath, file.Name()))
if dir.IsDir() {
dirPath := filepath.Join(pluginFilePath, dir.Name())
manifest, err := plugin.ReadManifestFromFile(dirPath)
if err != nil {
panic(err)
}
var id uuid.UUID
switch i {
case 0:
id = uuid.MustParse("e2c358b3-6482-4010-b0d8-679dff73153b")
case 1:
id = uuid.MustParse("d1c269a2-6482-4010-b0d8-679dff73153b")
case 2:
id = uuid.MustParse("f3b474c2-6482-4010-b0d8-679dff73153b")
default:
break
dirHashed, err := dirhash.HashDir(dirPath, dir.Name()+manifest.Firmware, dirhash.DefaultHash)
if err != nil {
panic(err)
}
//var id uuid.UUID
//switch i {
//case 0:
// id = uuid.MustParse("e2c358b3-6482-4010-b0d8-679dff73153b")
//case 1:
// id = uuid.MustParse("d1c269a2-6482-4010-b0d8-679dff73153b")
//case 2:
// id = uuid.MustParse("f3b474c2-6482-4010-b0d8-679dff73153b")
//default:
// break
//}
plugin := &Plugin{
ID: id,
Path: filepath.Join(pluginFilePath, file.Name(), pluginName),
ID: uuid.New(),
Path: filepath.Join(dirPath, util.BundledPluginName),
Hash: dirHashed,
Manifest: manifest,
}
......@@ -79,5 +89,9 @@ func registerPlugins() *PluginRegistry {
}
}
if err := pluginStore.Update(pr.Plugins); err != nil {
fmt.Println(err)
}
return pr
}
......@@ -11,6 +11,7 @@ import (
type Plugin struct {
ID uuid.UUID `json:"id,omitempty"`
Path string `json:"path,omitempty"`
Hash string `json:"hash,omitempty"`
Manifest *plugin.Manifest `json:"manifest,omitempty"`
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment