github.com/choria-io/go-choria@v0.28.1-0.20240416190746-b3bf9c7d5a45/providers/agent/mcorpc/ruby/provider.go (about) 1 // Copyright (c) 2020-2021, R.I. Pienaar and the Choria Project contributors 2 // 3 // SPDX-License-Identifier: Apache-2.0 4 5 package ruby 6 7 import ( 8 "context" 9 "fmt" 10 11 "github.com/choria-io/go-choria/config" 12 "github.com/choria-io/go-choria/inter" 13 "github.com/choria-io/go-choria/providers/agent/mcorpc/ddl/agent" 14 "github.com/choria-io/go-choria/server" 15 "github.com/sirupsen/logrus" 16 ) 17 18 // agents we do not ever wish to load from ruby 19 var denylist = []string{"rpcutil", "choria_util", "discovery"} 20 21 // Provider is a Agent Provider capable of executing old mcollective ruby agents 22 type Provider struct { 23 cfg *config.Config 24 log *logrus.Entry 25 agents []*agent.DDL 26 } 27 28 // Initialize configures the agent provider 29 func (p *Provider) Initialize(cfg *config.Config, log *logrus.Entry) { 30 p.cfg = cfg 31 p.log = log.WithFields(logrus.Fields{"provider": "ruby"}) 32 33 p.loadAgents(p.cfg.Choria.RubyLibdir) 34 } 35 36 // RegisterAgents registers known ruby agents using a shimm agent 37 func (p *Provider) RegisterAgents(ctx context.Context, mgr server.AgentManager, connector inter.AgentConnector, log *logrus.Entry) error { 38 for _, ddl := range p.Agents() { 39 agent, err := NewRubyAgent(ddl, mgr) 40 if err != nil { 41 p.log.Errorf("Could not register Ruby agent %s: %s", agent.Name(), err) 42 continue 43 } 44 45 err = mgr.RegisterAgent(ctx, agent.Name(), agent, connector) 46 if err != nil { 47 p.log.Errorf("Could not register Ruby agent %s: %s", agent.Name(), err) 48 continue 49 } 50 } 51 52 return nil 53 } 54 55 // Agents provides a list of loaded agent DDLs 56 func (p *Provider) Agents() []*agent.DDL { 57 return p.agents 58 } 59 60 // Version reports the version for this provider 61 func (p *Provider) Version() string { 62 return fmt.Sprintf("%s version %s", p.PluginName(), p.PluginVersion()) 63 }