diff --git a/controller/interfaces/plugin/plugin.go b/controller/interfaces/plugin/plugin.go index 8e065e5f43c8c46db46a2bcfee69cf664ae2ada9..6835b7e738b764149bac026232a0fd4d35d43208 100644 --- a/controller/interfaces/plugin/plugin.go +++ b/controller/interfaces/plugin/plugin.go @@ -1,6 +1,7 @@ package plugin import ( + "encoding/json" "fmt" "net" "os" @@ -149,6 +150,29 @@ func (lp *LoadedPlugin) UnmarshalBSON(data []byte) error { return nil } +func (lp *LoadedPlugin) UnmarshalJSON(data []byte) error { + loadedPluginHelper := new(LoadedPluginHelper) + if err := json.Unmarshal(data, loadedPluginHelper); err != nil { + return err + } + + lp.ID = loadedPluginHelper.ID + lp.Manifest = loadedPluginHelper.Manifest + lp.State = loadedPluginHelper.State + lp.ReattachConfig = hcplugin.ReattachConfig{ + Protocol: hcplugin.Protocol(loadedPluginHelper.ReattachConfig.Protocol), + ProtocolVersion: loadedPluginHelper.ReattachConfig.ProtocolVersion, + Addr: &net.UnixAddr{ + Name: loadedPluginHelper.ReattachConfig.Addr.Name, + Net: loadedPluginHelper.ReattachConfig.Addr.Net, + }, + Pid: loadedPluginHelper.ReattachConfig.Pid, + Test: loadedPluginHelper.ReattachConfig.Test, + } + + return nil +} + type LoadedPluginHelper struct { ID string `json:"id" bson:"_id"` Manifest Manifest `json:"manifest" bson:"manifest"`