Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions pkg/catalog/catalog.go
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,25 @@ func New(ctx context.Context, config Config, repo api.Repository, builtIns ...Bu
reconfigurers = append(reconfigurers, reconfigurer)
}

// Inject the plugin build information
buildInfoSetter, okBuildInfoSetter := plugin.Info().(BuildInfoSetter)
metadata, okMetadata := cfrer.(MetadataRetriever)
if okBuildInfoSetter && okMetadata {
value := metadata.GetMetadataByKey(BuildInfoMetadata)
if value == nil {
value = ""
}
if buildInfo, ok := value.(string); ok && buildInfo != "" {
buildInfoSetter.SetValue(buildInfo)
}
}
if !okBuildInfoSetter {
plugin.Logger().Warn("Plugin does not has support for setting the build info")
}
if !okMetadata {
plugin.Logger().Warn("Plugin configurer does not has support for getting the build info as metadata")
}

plugin.Logger().Info("Loaded plugin")
pluginCounts[pluginConfig.Type]++
}
Expand Down
48 changes: 44 additions & 4 deletions pkg/catalog/configure.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ import (
"log/slog"
"strings"

"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"

"github.com/openkcm/plugin-sdk/api"
"github.com/openkcm/plugin-sdk/pkg/plugin"
configv1 "github.com/openkcm/plugin-sdk/proto/service/common/config/v1"
Expand Down Expand Up @@ -65,6 +68,10 @@ type Reconfigurable struct {
}

func (r *Reconfigurable) Reconfigure(ctx context.Context) {
if r.DataSource == nil {
return
}

if dataHash, err := ConfigurePlugin(ctx, r.Configurer, r.DataSource, r.LastHash); err != nil {
r.Log.Error("Failed to reconfigure plugin", "error", err)
} else if dataHash == r.LastHash {
Expand Down Expand Up @@ -97,7 +104,11 @@ func configurePlugin(ctx context.Context, pluginLog *slog.Logger, configurer Con

if !dataSource.IsDynamic() {
pluginLog.With("reconfigurable", false).Info("Configured plugin")
return nil, nil

return &Reconfigurable{
Log: pluginLog,
Configurer: configurer,
}, nil
}

pluginLog.With("reconfigurable", true).With("hash", dataHash).Info("Configured plugin")
Expand Down Expand Up @@ -141,6 +152,8 @@ type configurerV1 struct {
plugin.Facade

configv1.ConfigServiceClient

metadata map[string]string
}

var _ Configurer = (*configurerV1)(nil)
Expand All @@ -155,10 +168,25 @@ func (v1 *configurerV1) Version() uint {
return 1
}

func (v1 *configurerV1) Configure(ctx context.Context, yamlConfiguration string) error {
_, err := v1.ConfigServiceClient.Configure(ctx, &configv1.ConfigureRequest{
YamlConfiguration: yamlConfiguration,
func (v1 *configurerV1) GetMetadataByKey(key string) any {
if metadata, ok := v1.metadata[key]; ok {
return metadata
}
return nil
}

func (v1 *configurerV1) Configure(ctx context.Context, data string) error {
resp, err := v1.ConfigServiceClient.Configure(ctx, &configv1.ConfigureRequest{
YamlConfiguration: data,
})
switch status.Code(err) {
case codes.OK:
if v1.metadata == nil {
v1.metadata = make(map[string]string)
}
v1.metadata[BuildInfoMetadata] = extractBuildInfo(resp)
}

return err
}

Expand All @@ -167,3 +195,15 @@ func hashData(data string) string {
_, _ = io.Copy(h, strings.NewReader(data))
return hex.EncodeToString(h.Sum(nil)[:16])
}

func extractBuildInfo(resp *configv1.ConfigureResponse) string {
defer func() {
_ = recover()
}()

if resp == nil {
return ""
}

return strings.TrimSpace(resp.GetBuildInfo())
}
48 changes: 0 additions & 48 deletions pkg/catalog/configurer.go

This file was deleted.

9 changes: 9 additions & 0 deletions pkg/catalog/metadata.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package catalog

const (
BuildInfoMetadata = "BuildInfo"
)

type MetadataRetriever interface {
GetMetadataByKey(key string) any
}
2 changes: 1 addition & 1 deletion pkg/catalog/plugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ func (d FileData) IsDynamic() bool {
return true
}

type Build interface {
type BuildInfoSetter interface {
SetValue(string)
}

Expand Down
Loading