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  }