github.com/choria-io/go-choria@v0.28.1-0.20240416190746-b3bf9c7d5a45/providers/agent/mcorpc/plugin.go (about) 1 // Copyright (c) 2020-2022, R.I. Pienaar and the Choria Project contributors 2 // 3 // SPDX-License-Identifier: Apache-2.0 4 5 package mcorpc 6 7 import ( 8 "github.com/choria-io/go-choria/inter" 9 "github.com/choria-io/go-choria/server" 10 "github.com/choria-io/go-choria/server/agents" 11 ) 12 13 // AgentPlugin is a choria plugin 14 type AgentPlugin struct { 15 metadata *agents.Metadata 16 creator func(mgr server.AgentManager) (agents.Agent, error) 17 } 18 19 // NewChoriaAgentPlugin creates a new plugin for an agent that allows it to plug into the Choria Plugin system 20 func NewChoriaAgentPlugin(metadata *agents.Metadata, creator func(mgr server.AgentManager) (agents.Agent, error)) inter.Pluggable { 21 plugin := &AgentPlugin{ 22 metadata: metadata, 23 creator: creator, 24 } 25 26 return plugin 27 } 28 29 // PluginInstance implements plugin.Pluggable 30 func (p *AgentPlugin) PluginInstance() any { 31 return p.creator 32 } 33 34 // PluginVersion implements plugin.Pluggable 35 func (p *AgentPlugin) PluginVersion() string { 36 return p.metadata.Version 37 } 38 39 // PluginName implements plugin.Pluggable 40 func (p *AgentPlugin) PluginName() string { 41 return p.metadata.Description 42 } 43 44 // PluginType implements plugin.Pluggable 45 func (p *AgentPlugin) PluginType() inter.PluginType { 46 return inter.AgentPlugin 47 }