Class MCollective::PluginPackager::AgentDefinition
In: lib/mcollective/pluginpackager/agent_definition.rb
Parent: Object

MCollective Agent Plugin package

Methods

agent   client   common   identify_packages   new  

Attributes

dependencies  [RW] 
iteration  [RW] 
mcclient  [RW] 
mccommon  [RW] 
mcserver  [RW] 
metadata  [RW] 
packagedata  [RW] 
path  [RW] 
plugintype  [RW] 
postinstall  [RW] 
preinstall  [RW] 
target_path  [RW] 
vendor  [RW] 

Public Class methods

[Source]

    # File lib/mcollective/pluginpackager/agent_definition.rb, line 8
 8:       def initialize(path, name, vendor, preinstall, postinstall, iteration, dependencies, mcodependency, plugintype)
 9:         @plugintype = plugintype
10:         @path = path
11:         @packagedata = {}
12:         @iteration = iteration || 1
13:         @preinstall = preinstall
14:         @postinstall = postinstall
15:         @vendor = vendor || "Puppet Labs"
16:         @mcserver = mcodependency[:server] || "mcollective"
17:         @mcclient = mcodependency[:client] || "mcollective-client"
18:         @mccommon = mcodependency[:common] || "mcollective-common"
19:         @dependencies = dependencies || []
20:         @target_path = File.expand_path(@path)
21:         @metadata = PluginPackager.get_metadata(@path, "agent")
22:         @metadata[:name] = (name || @metadata[:name]).downcase.gsub(" ", "-")
23:         identify_packages
24:       end

Public Instance methods

Obtain Agent package files and dependencies.

[Source]

    # File lib/mcollective/pluginpackager/agent_definition.rb, line 37
37:       def agent
38:         agent = {:files => [],
39:                  :dependencies => @dependencies.clone << @mcserver,
40:                  :description => "Agent plugin for #{@metadata[:name]}"}
41: 
42:         agentdir = File.join(@path, "agent")
43: 
44:         if PluginPackager.check_dir_present agentdir
45:           ddls = Dir.glob(File.join(agentdir, "*.ddl"))
46:           agent[:files] = (Dir.glob(File.join(agentdir, "*")) - ddls)
47:           implementations = Dir.glob(File.join(@metadata[:name], "**"))
48:           agent[:files] += implementations unless implementations.empty?
49:         else
50:           return nil
51:         end
52:         agent[:dependencies] << ["mcollective-#{@metadata[:name]}-common", @metadata[:version]]
53:         agent
54:       end

Obtain client package files and dependencies.

[Source]

    # File lib/mcollective/pluginpackager/agent_definition.rb, line 57
57:       def client
58:         client = {:files => [],
59:                   :dependencies => @dependencies.clone << @mcclient,
60:                   :description => "Client plugin for #{@metadata[:name]}"}
61: 
62:         clientdir = File.join(@path, "application")
63:         bindir = File.join(@path, "bin")
64:         aggregatedir = File.join(@path, "aggregate")
65: 
66:         client[:files] += Dir.glob(File.join(clientdir, "*")) if PluginPackager.check_dir_present clientdir
67:         client[:files] += Dir.glob(File.join(bindir,"*")) if PluginPackager.check_dir_present bindir
68:         client[:files] += Dir.glob(File.join(aggregatedir, "*")) if PluginPackager.check_dir_present aggregatedir
69:         client[:dependencies] << ["mcollective-#{@metadata[:name]}-common", @metadata[:version]]
70:         client[:files].empty? ? nil : client
71:       end

Obtain common package files and dependencies.

[Source]

    # File lib/mcollective/pluginpackager/agent_definition.rb, line 74
74:       def common
75:         common = {:files =>[],
76:                   :dependencies => @dependencies.clone << @mccommon,
77:                   :description => "Common libraries for #{@metadata[:name]}"}
78: 
79:         commondir = File.join(@path, "util")
80:         ddldir = File.join(@path, "agent")
81:         common[:files] += Dir.glob(File.join(ddldir, "*.ddl")) if PluginPackager.check_dir_present ddldir
82: 
83:         # We fail if there is no ddl file present
84:         if common[:files].empty?
85:           raise "cannot create package - No ddl file found in #{File.join(@path, "agent")}"
86:         end
87: 
88:         common[:files] += Dir.glob(File.join(commondir,"*")) if PluginPackager.check_dir_present commondir
89:         common[:files].empty? ? nil : common
90:       end

Identify present packages and populate packagedata hash.

[Source]

    # File lib/mcollective/pluginpackager/agent_definition.rb, line 27
27:       def identify_packages
28:         common_package = common
29:         @packagedata[:common] = common_package if common_package
30:         agent_package = agent
31:         @packagedata[:agent] = agent_package if agent_package
32:         client_package = client
33:         @packagedata[:client] = client_package if client_package
34:       end

[Validate]