choria-mcorpc-support 2.20.5 → 2.20.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mcollective.rb +1 -1
  3. data/lib/mcollective/application/plugin.rb +19 -7
  4. data/lib/mcollective/ddl/agentddl.rb +4 -0
  5. data/lib/mcollective/ddl/base.rb +14 -1
  6. data/lib/mcollective/pluginpackager/agent_definition.rb +11 -7
  7. data/lib/mcollective/pluginpackager/{puppet_module_packager.rb → forge_packager.rb} +3 -3
  8. data/lib/mcollective/pluginpackager/standard_definition.rb +23 -12
  9. data/lib/mcollective/pluginpackager/templates/{puppet_module → forge}/README.md.erb +1 -1
  10. data/lib/mcollective/pluginpackager/templates/{puppet_module → forge}/data/defaults.yaml.erb +0 -0
  11. data/lib/mcollective/pluginpackager/templates/{puppet_module → forge}/data/plugin.yaml.erb +0 -0
  12. data/lib/mcollective/pluginpackager/templates/{puppet_module → forge}/hiera.yaml.erb +0 -0
  13. data/lib/mcollective/pluginpackager/templates/{puppet_module → forge}/manifests/init.pp.erb +0 -0
  14. data/lib/mcollective/pluginpackager/templates/{puppet_module → forge}/metadata.json.erb +2 -2
  15. metadata +9 -23
  16. data/lib/mcollective/pluginpackager/debpackage_packager.rb +0 -237
  17. data/lib/mcollective/pluginpackager/modulepackage_packager.rb +0 -127
  18. data/lib/mcollective/pluginpackager/ospackage_packager.rb +0 -59
  19. data/lib/mcollective/pluginpackager/rpmpackage_packager.rb +0 -180
  20. data/lib/mcollective/pluginpackager/templates/debian/Makefile.erb +0 -7
  21. data/lib/mcollective/pluginpackager/templates/debian/changelog.erb +0 -5
  22. data/lib/mcollective/pluginpackager/templates/debian/compat.erb +0 -1
  23. data/lib/mcollective/pluginpackager/templates/debian/control.erb +0 -15
  24. data/lib/mcollective/pluginpackager/templates/debian/copyright.erb +0 -8
  25. data/lib/mcollective/pluginpackager/templates/debian/rules.erb +0 -6
  26. data/lib/mcollective/pluginpackager/templates/module/Modulefile.erb +0 -5
  27. data/lib/mcollective/pluginpackager/templates/module/README.md.erb +0 -37
  28. data/lib/mcollective/pluginpackager/templates/module/_manifest.pp.erb +0 -9
  29. data/lib/mcollective/pluginpackager/templates/redhat/rpm_spec.erb +0 -63
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f2b40e519fe1594ef21f3842e4786bdfbe9359f1
4
- data.tar.gz: ae87678ad14ba3d22805143c59c5558f271286c4
3
+ metadata.gz: 29d095eecde9726e77979a330ff4ed2a27ac7912
4
+ data.tar.gz: a6aa7aa304f84aa576e711e40184d492c245295e
5
5
  SHA512:
6
- metadata.gz: 92c39adc948b47af880815b13597c4205a4e0dcb3058c82d5e2c8e762cc11a15b7ae15028093bf3a04e9f01458bde03e3a91b678b783fbb49875ea93bbc85786
7
- data.tar.gz: e49b19a7e16acec11b619e1492ef6e7f3cadb819bf93ac0759889fa1032e53529e7432404b8a10cbde6e8152204e069372d493bf0c6ff908ce87684bfd3add8b
6
+ metadata.gz: da30c83fef47986f8acb747d284ace2ecc736cfd9f7045b938c51684c801837080b346dbcdde7ca27a692e00181bb4b616af1d172457312217d26bd0d113bc92
7
+ data.tar.gz: ad9ca3e3fc6e99bad8eafd7a97764519d0e490644d9b80c39933b020d26c1f307ba4891e34d63bf8d79ac207533981dfa6a2a1bc201a99bb9ce9c4798747758c
@@ -54,7 +54,7 @@ module MCollective
54
54
  require "mcollective/util"
55
55
  require "mcollective/validator"
56
56
 
57
- VERSION = "2.20.5".freeze
57
+ VERSION = "2.20.6".freeze
58
58
 
59
59
  def self.version
60
60
  VERSION
@@ -213,7 +213,7 @@ mco plugin package [options] <directory>
213
213
  def load_plugin_ddl(plugin, type)
214
214
  [plugin, "#{plugin}_#{type}"].each do |p|
215
215
  ddl = DDL.new(p, type, false)
216
- if ddl.findddlfile(p, type)
216
+ if ddl.client_activated? && ddl.findddlfile(p, type)
217
217
  ddl.loadddlfile
218
218
  return ddl
219
219
  end
@@ -224,9 +224,14 @@ mco plugin package [options] <directory>
224
224
 
225
225
  # Show application list and plugin help
226
226
  def doc_command
227
- known_plugin_types = [["Agents", :agent], ["Aggregate", :aggregate],
228
- ["Connectors", :connector], ["Data Queries", :data],
229
- ["Discovery Methods", :discovery], ["Validator Plugins", :validator]]
227
+ known_plugin_types = [
228
+ ["Agents", :agent],
229
+ ["Aggregate", :aggregate],
230
+ ["Connectors", :connector],
231
+ ["Data Queries", :data],
232
+ ["Discovery Methods", :discovery],
233
+ ["Validator Plugins", :validator]
234
+ ]
230
235
 
231
236
  if configuration.include?(:target) && configuration[:target] != "."
232
237
  if configuration[:target] =~ /^(.+?)\/(.+)$/
@@ -265,7 +270,11 @@ mco plugin package [options] <directory>
265
270
 
266
271
  PluginManager.find(plugin_type[1], "ddl").each do |ddl|
267
272
  begin
268
- help = DDL.new(ddl, plugin_type[1])
273
+ help = DDL.new(ddl, plugin_type[1], false)
274
+
275
+ next unless help.client_activated?
276
+
277
+ help.loadddlfile
269
278
  pluginname = ddl.gsub(/_#{plugin_type[1]}$/, "")
270
279
  puts " %-25s %s" % [pluginname, help.meta[:description]]
271
280
  rescue => e
@@ -289,7 +298,7 @@ mco plugin package [options] <directory>
289
298
  # Creates the correct package plugin object.
290
299
  def prepare_plugin
291
300
  plugintype = set_plugin_type unless configuration[:plugintype]
292
- configuration[:format] = "puppet_module" unless configuration[:format]
301
+ configuration[:format] = "forge" unless configuration[:format]
293
302
  PluginPackager.load_packagers
294
303
  plugin_class = PluginPackager[configuration[:plugintype]]
295
304
 
@@ -299,7 +308,10 @@ mco plugin package [options] <directory>
299
308
  configuration[:dependency].map!{|dep| {:name => dep, :version => nil}}
300
309
  end
301
310
 
302
- mcdependency = {:mcname => configuration[:mcname], :mcversion => configuration[:mcversion]}
311
+ mcdependency = {
312
+ :mcname => configuration[:mcname],
313
+ :mcversion => configuration[:mcversion]
314
+ }
303
315
 
304
316
  # Deprecation warning for --iteration
305
317
  if configuration[:iteration]
@@ -44,6 +44,10 @@ module MCollective
44
44
  super
45
45
  end
46
46
 
47
+ def client_activated?
48
+ Util.str_to_bool(@config.pluginconf.fetch("%s.activate_client" % @pluginname, ACTIVATION_DEFAULT.to_s))
49
+ end
50
+
47
51
  def input(argument, properties)
48
52
  raise "Input needs a :optional property" unless properties.include?(:optional)
49
53
 
@@ -19,6 +19,8 @@ module MCollective
19
19
  class Base
20
20
  attr_reader :meta, :entities, :pluginname, :plugintype, :usage, :requirements
21
21
 
22
+ ACTIVATION_DEFAULT = true
23
+
22
24
  def initialize(plugin, plugintype=:agent, loadddl=true)
23
25
  @entities = {}
24
26
  @meta = {}
@@ -77,6 +79,10 @@ module MCollective
77
79
  end
78
80
 
79
81
  def loadddlfile
82
+ if @config.mode == :client && !client_activated?
83
+ raise("%s/%s is disabled, cannot load DDL file" % [@plugintype, @pluginname])
84
+ end
85
+
80
86
  if ddlfile = findddlfile
81
87
  instance_eval(File.read(ddlfile), ddlfile, 1)
82
88
  else
@@ -95,7 +101,12 @@ module MCollective
95
101
  return ddlfile
96
102
  end
97
103
  end
98
- return false
104
+
105
+ false
106
+ end
107
+
108
+ def client_activated?
109
+ ACTIVATION_DEFAULT
99
110
  end
100
111
 
101
112
  def validate_requirements
@@ -186,6 +197,8 @@ module MCollective
186
197
  @entities[action][:output][argument] = {:description => properties[:description],
187
198
  :display_as => properties[:display_as],
188
199
  :default => properties[:default]}
200
+
201
+ @entities[action][:output][argument][:type] = properties[:type] if properties[:type]
189
202
  end
190
203
 
191
204
  def requires(requirement)
@@ -12,7 +12,7 @@ module MCollective
12
12
  @revision = configuration[:revision] || 1
13
13
  @preinstall = configuration[:preinstall]
14
14
  @postinstall = configuration[:postinstall]
15
- @vendor = configuration[:vendor] || "Puppet Labs"
15
+ @vendor = configuration[:vendor] || "Choria.IO User"
16
16
  @dependencies = configuration[:dependency] || []
17
17
  @target_path = File.expand_path(@path)
18
18
  @metadata, mcversion = PluginPackager.get_metadata(@path, "agent")
@@ -36,9 +36,11 @@ module MCollective
36
36
 
37
37
  # Obtain Agent package files and dependencies.
38
38
  def agent
39
- agent = {:files => [],
40
- :dependencies => @dependencies.clone,
41
- :description => "Agent plugin for #{@metadata[:name]}"}
39
+ agent = {
40
+ :files => [],
41
+ :dependencies => @dependencies.clone,
42
+ :description => "Agent plugin for #{@metadata[:name]}"
43
+ }
42
44
 
43
45
  agentdir = File.join(@path, "agent")
44
46
 
@@ -69,9 +71,11 @@ module MCollective
69
71
 
70
72
  # Obtain common package files and dependencies.
71
73
  def common
72
- common = {:files =>[],
73
- :dependencies => @dependencies.clone,
74
- :description => "Common libraries for #{@metadata[:name]}"}
74
+ common = {
75
+ :files =>[],
76
+ :dependencies => @dependencies.clone,
77
+ :description => "Common libraries for #{@metadata[:name]}"
78
+ }
75
79
 
76
80
  datadir = File.join(@path, "data", "**")
77
81
  utildir = File.join(@path, "util", "**", "**")
@@ -2,12 +2,12 @@ require "yaml"
2
2
 
3
3
  module MCollective
4
4
  module PluginPackager
5
- class PuppetmodulePackager
5
+ class ForgePackager
6
6
  def initialize(plugin, pluginpath = nil, signature = nil, verbose = false, keep_artifacts = nil, module_template = nil)
7
7
  @plugin = plugin
8
8
  @verbose = verbose
9
9
  @keep_artifacts = keep_artifacts
10
- @module_template = module_template || File.join(File.dirname(__FILE__), 'templates', 'puppet_module')
10
+ @module_template = module_template || File.join(File.dirname(__FILE__), 'templates', 'forge')
11
11
  end
12
12
 
13
13
  def which(cmd)
@@ -214,7 +214,7 @@ module MCollective
214
214
  begin
215
215
  PluginPackager.execute_verbosely(@verbose) do
216
216
  Dir.chdir(@tmpdir) do
217
- PluginPackager.safe_system('puppet module build')
217
+ PluginPackager.safe_system('pdk build --force')
218
218
  end
219
219
  end
220
220
  rescue
@@ -11,7 +11,7 @@ module MCollective
11
11
  @revision = configuration[:revision] || 1
12
12
  @preinstall = configuration[:preinstall]
13
13
  @postinstall = configuration[:postinstall]
14
- @vendor = configuration[:vendor] || "Puppet Labs"
14
+ @vendor = configuration[:vendor] || "Choria.IO User"
15
15
  @dependencies = configuration[:dependency] || []
16
16
  @target_path = File.expand_path(@path)
17
17
  @metadata, mcversion = PluginPackager.get_metadata(@path, @plugintype)
@@ -20,6 +20,7 @@ module MCollective
20
20
  @dependencies << {:name => "#{mcname}-common", :version => @mcversion}
21
21
  @metadata[:name] = (configuration[:pluginname] || @metadata[:name]).downcase.gsub(/\s+|_/, "-")
22
22
  @metadata[:version] = (configuration[:version] || @metadata[:version])
23
+
23
24
  identify_packages
24
25
  end
25
26
 
@@ -33,9 +34,11 @@ module MCollective
33
34
 
34
35
  # Obtain standard plugin files and dependencies
35
36
  def plugin
36
- plugindata = {:files => [],
37
- :dependencies => @dependencies.clone,
38
- :description => "#{@name} #{@plugintype} plugin for the Marionette Collective."}
37
+ plugindata = {
38
+ :files => [],
39
+ :dependencies => @dependencies.clone,
40
+ :description => "#{@name} #{@plugintype} plugin for the Choria Orchestrator."
41
+ }
39
42
 
40
43
  plugindir = File.join(@path, @plugintype.to_s)
41
44
  if PluginPackager.check_dir_present plugindir
@@ -44,25 +47,33 @@ module MCollective
44
47
  return nil
45
48
  end
46
49
 
47
- plugindata[:plugindependency] = {:name => "#{@mcname}-#{@metadata[:name]}-common",
48
- :version => @metadata[:version],
49
- :revision => @revision} if @packagedata[:common]
50
+ if @packagedata[:common]
51
+ plugindata[:plugindependency] = {
52
+ :name => "#{@mcname}-#{@metadata[:name]}-common",
53
+ :version => @metadata[:version],
54
+ :revision => @revision
55
+ }
56
+ end
57
+
50
58
  plugindata
51
59
  end
52
60
 
53
61
  # Obtain list of common files
54
62
  def common
55
- common = {:files => [],
56
- :dependencies => @dependencies.clone,
57
- :description => "Common libraries for #{@name} connector plugin"}
63
+ common = {
64
+ :files => [],
65
+ :dependencies => @dependencies.clone,
66
+ :description => "Common libraries for #{@name} connector plugin"
67
+ }
58
68
 
59
69
  commondir = File.join(@path, "util")
60
70
  if PluginPackager.check_dir_present commondir
61
71
  common[:files] = Dir.glob(File.join(commondir, "*"))
72
+
62
73
  return common
63
- else
64
- return nil
65
74
  end
75
+
76
+ nil
66
77
  end
67
78
  end
68
79
  end
@@ -67,6 +67,6 @@ For a full list of possible configuration settings see the module [source reposi
67
67
 
68
68
  ## Development:
69
69
 
70
- To contribute to this MCollective plugin please visit <%= @plugin.metadata[:url] %>.
70
+ To contribute to this [Choria.IO](https://choria.io) plugin please visit <%= @plugin.metadata[:url] %>.
71
71
 
72
72
  This module was generated using the Choria Plugin Packager based on templates found at the [GitHub Project](https://github.com/choria-io/).
@@ -7,12 +7,12 @@
7
7
  "source": "<%= @plugin.metadata[:url] %>",
8
8
  "project_page": "<%= @plugin.metadata[:url] %>",
9
9
  "dependencies": [
10
- {"name": "choria/mcollective", "version_requirement": ">= 0.4.0 < 2.0.0"}
10
+ {"name": "choria/mcollective", "version_requirement": ">= 0.9.3 < 2.0.0"}
11
11
  ],
12
12
  "requirements": [
13
13
  {
14
14
  "name": "puppet",
15
- "version_requirement": ">= 4.9.0"
15
+ "version_requirement": ">= 6.0.0"
16
16
  }
17
17
  ]
18
18
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: choria-mcorpc-support
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.20.5
4
+ version: 2.20.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - R.I.Pienaar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-04 00:00:00.000000000 Z
11
+ date: 2019-09-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: systemu
@@ -135,28 +135,14 @@ files:
135
135
  - lib/mcollective/pluginmanager.rb
136
136
  - lib/mcollective/pluginpackager.rb
137
137
  - lib/mcollective/pluginpackager/agent_definition.rb
138
- - lib/mcollective/pluginpackager/debpackage_packager.rb
139
- - lib/mcollective/pluginpackager/modulepackage_packager.rb
140
- - lib/mcollective/pluginpackager/ospackage_packager.rb
141
- - lib/mcollective/pluginpackager/puppet_module_packager.rb
142
- - lib/mcollective/pluginpackager/rpmpackage_packager.rb
138
+ - lib/mcollective/pluginpackager/forge_packager.rb
143
139
  - lib/mcollective/pluginpackager/standard_definition.rb
144
- - lib/mcollective/pluginpackager/templates/debian/Makefile.erb
145
- - lib/mcollective/pluginpackager/templates/debian/changelog.erb
146
- - lib/mcollective/pluginpackager/templates/debian/compat.erb
147
- - lib/mcollective/pluginpackager/templates/debian/control.erb
148
- - lib/mcollective/pluginpackager/templates/debian/copyright.erb
149
- - lib/mcollective/pluginpackager/templates/debian/rules.erb
150
- - lib/mcollective/pluginpackager/templates/module/Modulefile.erb
151
- - lib/mcollective/pluginpackager/templates/module/README.md.erb
152
- - lib/mcollective/pluginpackager/templates/module/_manifest.pp.erb
153
- - lib/mcollective/pluginpackager/templates/puppet_module/README.md.erb
154
- - lib/mcollective/pluginpackager/templates/puppet_module/data/defaults.yaml.erb
155
- - lib/mcollective/pluginpackager/templates/puppet_module/data/plugin.yaml.erb
156
- - lib/mcollective/pluginpackager/templates/puppet_module/hiera.yaml.erb
157
- - lib/mcollective/pluginpackager/templates/puppet_module/manifests/init.pp.erb
158
- - lib/mcollective/pluginpackager/templates/puppet_module/metadata.json.erb
159
- - lib/mcollective/pluginpackager/templates/redhat/rpm_spec.erb
140
+ - lib/mcollective/pluginpackager/templates/forge/README.md.erb
141
+ - lib/mcollective/pluginpackager/templates/forge/data/defaults.yaml.erb
142
+ - lib/mcollective/pluginpackager/templates/forge/data/plugin.yaml.erb
143
+ - lib/mcollective/pluginpackager/templates/forge/hiera.yaml.erb
144
+ - lib/mcollective/pluginpackager/templates/forge/manifests/init.pp.erb
145
+ - lib/mcollective/pluginpackager/templates/forge/metadata.json.erb
160
146
  - lib/mcollective/registration/base.rb
161
147
  - lib/mcollective/rpc.rb
162
148
  - lib/mcollective/rpc/actionrunner.rb
@@ -1,237 +0,0 @@
1
- module MCollective
2
- module PluginPackager
3
- class DebpackagePackager
4
- require 'erb'
5
-
6
- def initialize(plugin, pluginpath = nil, signature = nil, verbose = false, keep_artifacts = nil, module_template = nil)
7
- if PluginPackager.command_available?('debuild')
8
- @plugin = plugin
9
- @verbose = verbose
10
- @libdir = pluginpath || '/usr/share/mcollective/plugins/mcollective/'
11
- @signature = signature
12
- @package_name = "#{@plugin.mcname}-#{@plugin.metadata[:name]}"
13
- @keep_artifacts = keep_artifacts
14
- else
15
- raise("Cannot build package. 'debuild' is not present on the system.")
16
- end
17
- end
18
-
19
- # Build process :
20
- # - create buildroot
21
- # - craete buildroot/debian
22
- # - create the relative directories with package contents
23
- # - create install files for each of the plugins that are going to be built
24
- # - create debian build files
25
- # - create tarball
26
- # - create pre and post install files
27
- # - run the build script
28
- # - move packages to cwd
29
- # - clean up
30
- def create_packages
31
- begin
32
- puts "Building packages for #{@package_name} plugin."
33
-
34
- @tmpdir = Dir.mktmpdir('mcollective_packager')
35
- @build_dir = File.join(@tmpdir, "#{@package_name}_#{@plugin.metadata[:version]}")
36
- Dir.mkdir(@build_dir)
37
-
38
- create_debian_dir
39
- @plugin.packagedata.each do |type, data|
40
- prepare_tmpdirs(data)
41
- create_install_file(type, data)
42
- create_pre_and_post_install(type)
43
- end
44
- create_debian_files
45
- create_tar
46
- run_build
47
- move_packages
48
-
49
- puts "Completed building all packages for #{@package_name} plugin."
50
- ensure
51
- if @keep_artifacts
52
- puts 'Keeping build artifacts.'
53
- puts "Build artifacts saved - #{@tmpdir}"
54
- else
55
- puts 'Removing build artifacts.'
56
- cleanup_tmpdirs
57
- end
58
- end
59
- end
60
-
61
- private
62
-
63
- def create_debian_files
64
- ['control', 'Makefile', 'compat', 'rules', 'copyright', 'changelog'].each do |f|
65
- create_file(f)
66
- end
67
- end
68
-
69
- def run_build
70
- FileUtils.cd(@build_dir) do
71
- PluginPackager.execute_verbosely(@verbose) do
72
- if @signature
73
- if @signature.is_a?(String)
74
- PluginPackager.safe_system("debuild --no-lintian -i -k#{@signature}")
75
- else
76
- PluginPackager.safe_system("debuild --no-lintian -i")
77
- end
78
- else
79
- PluginPackager.safe_system("debuild --no-lintian -i -us -uc")
80
- end
81
- end
82
- end
83
- end
84
-
85
- # Creates a string used by the control file to specify dependencies
86
- # Dependencies can be formatted as :
87
- # foo (>= x.x-x)
88
- # foo (>= x.x)
89
- # foo
90
- def build_dependency_string(data)
91
- dependencies = []
92
- PluginPackager.filter_dependencies('debian', data[:dependencies]).each do |dep|
93
- if dep[:version] && dep[:revision]
94
- dependencies << "#{dep[:name]} (>=#{dep[:version]}-#{dep[:revision]}) | puppet-agent"
95
- elsif dep[:version]
96
- dependencies << "#{dep[:name]} (>=#{dep[:version]}) | puppet-agent"
97
- else
98
- dependencies << "#{dep[:name]} | puppet-agent"
99
- end
100
- end
101
-
102
- if data[:plugindependency]
103
- dependencies << "#{data[:plugindependency][:name]} (= ${binary:Version})"
104
- end
105
-
106
- dependencies.join(', ')
107
- end
108
-
109
- # Creates an install file for each of the packages that are going to be created
110
- # for the plugin
111
- def create_install_file(type, data)
112
- install_file = "#{@package_name}-#{type}"
113
- begin
114
- install_file = File.join(@build_dir, 'debian', "#{install_file}.install")
115
- File.open(install_file, 'w') do |file|
116
- data[:files].each do |f|
117
- extended_filename = File.join(@libdir, File.expand_path(f).gsub(/^#{@plugin.target_path}/, ''))
118
- file.puts "#{extended_filename} #{File.dirname(extended_filename)}"
119
- end
120
- end
121
- rescue Errno::EACCES => e
122
- puts "Could not create install file '#{install_file}'. Permission denied"
123
- raise e
124
- rescue => e
125
- puts "Could not create install file '#{install_file}'."
126
- raise e
127
- end
128
- end
129
-
130
- # Move source package and debs to cwd
131
- def move_packages
132
- begin
133
- files_to_copy = Dir.glob(File.join(@tmpdir, '*.{deb,dsc,diff.gz,orig.tar.gz,changes}'))
134
- FileUtils.cp(files_to_copy, '.')
135
- rescue => e
136
- puts 'Could not copy packages to working directory.'
137
- raise e
138
- end
139
- end
140
-
141
- # Create pre and post install files in $buildroot/debian
142
- # from supplied scripts.
143
- # Note that all packages built for the plugin will invoke
144
- # the same pre and post install scripts.
145
- def create_pre_and_post_install(type)
146
- if @plugin.preinstall
147
- if !File.exists?(@plugin.preinstall)
148
- puts "pre-install script '#{@plugin.preinstall}' not found."
149
- raise(Errno::ENOENT, @plugin.preinstall)
150
- else
151
- FileUtils.cp(@plugin.preinstall, File.join(@build_dir, 'debian', "#{@package_name}-#{type}.preinst"))
152
- end
153
- end
154
-
155
- if @plugin.postinstall
156
- if !File.exists?(@plugin.postinstall)
157
- puts "post-install script '#{@plugin.postinstall}' not found."
158
- raise(Errno::ENOENT, @plugin.postinstall)
159
- else
160
- FileUtils.cp(@plugin.postinstall, File.join(@build_dir, 'debian', "#{@package_name}-#{type}.postinst"))
161
- end
162
- end
163
- end
164
-
165
- # Tar up source
166
- # Expects directory : $mcollective-$agent_$version
167
- # Creates file : $buildroot/$mcollective-$agent_$version.orig.tar.gz
168
- def create_tar
169
- name_and_version = "#{@package_name}_#{@plugin.metadata[:version]}"
170
- tarfile = "#{name_and_version}.orig.tar.gz"
171
- begin
172
- PluginPackager.execute_verbosely(@verbose) do
173
- Dir.chdir(@tmpdir) do
174
- PluginPackager.safe_system("tar -Pcvzf #{File.join(@tmpdir, tarfile)} #{name_and_version}")
175
- end
176
- end
177
- rescue Exception => e
178
- puts "Could not create tarball - #{tarfile}"
179
- raise e
180
- end
181
- end
182
-
183
- def create_file(filename)
184
- begin
185
- file = ERB.new(File.read(File.join(File.dirname(__FILE__), 'templates', 'debian', "#{filename}.erb")), nil, '-')
186
- File.open(File.join(@build_dir, 'debian', filename), 'w') do |f|
187
- f.puts file.result(binding)
188
- end
189
- rescue => e
190
- puts "Could not create file - '#{filename}'"
191
- raise e
192
- end
193
- end
194
-
195
- # Move files contained in the plugin to the correct directory
196
- # relative to the build root.
197
- def prepare_tmpdirs(data)
198
- data[:files].each do |file|
199
- begin
200
- targetdir = File.join(@build_dir, @libdir, File.dirname(File.expand_path(file)).gsub(/^#{@plugin.target_path}/, ""))
201
- FileUtils.mkdir_p(targetdir) unless File.directory?(targetdir)
202
- FileUtils.cp_r(file, targetdir)
203
- rescue Errno::EACCES => e
204
- puts "Could not create directory '#{targetdir}'. Permission denied"
205
- raise e
206
- rescue Errno::ENOENT => e
207
- puts "Could not copy file '#{file}' to '#{targetdir}'. File does not exist"
208
- raise e
209
- rescue => e
210
- puts 'Could not prepare build directory'
211
- raise e
212
- end
213
- end
214
- end
215
-
216
- # Create the $buildroot/debian directory
217
- def create_debian_dir
218
- deb_dir = File.join(@build_dir, 'debian')
219
- begin
220
- FileUtils.mkdir_p(deb_dir)
221
- rescue => e
222
- puts "Could not create directory '#{deb_dir}'"
223
- raise e
224
- end
225
- end
226
-
227
- def cleanup_tmpdirs
228
- begin
229
- FileUtils.rm_r(@tmpdir) if File.directory?(@tmpdir)
230
- rescue => e
231
- puts "Could not remove temporary build directory - '#{@tmpdir}'"
232
- raise e
233
- end
234
- end
235
- end
236
- end
237
- end
@@ -1,127 +0,0 @@
1
- module MCollective
2
- module PluginPackager
3
- class ModulepackagePackager
4
- require 'erb'
5
-
6
- def initialize(plugin, pluginpath = nil, signature = nil, verbose = false, keep_artifacts = nil, module_template = nil)
7
- assert_new_enough_puppet
8
- @plugin = plugin
9
- @package_name = "#{@plugin.mcname}_#{@plugin.metadata[:name]}".gsub(/-/, '_')
10
- @verbose = verbose
11
- @keep_artifacts = keep_artifacts
12
- @module_template = module_template || File.join(File.dirname(__FILE__), 'templates', 'module')
13
- end
14
-
15
- # Build Process :
16
- # - create module directory
17
- # - run 'puppet module build'
18
- # - move generated package back to cwd
19
- def create_packages
20
- begin
21
- puts "Building module for #{@package_name} plugin."
22
-
23
- @tmpdir = Dir.mktmpdir('mcollective_packager')
24
- make_module
25
- run_build
26
- move_package
27
-
28
- puts "Completed building module for #{@package_name} plugin."
29
- ensure
30
- if @keep_artifacts
31
- puts 'Keeping build artifacts'
32
- puts "Build artifacts saved - #{@tmpdir}"
33
- else
34
- cleanup_tmpdirs
35
- end
36
- end
37
- end
38
-
39
- private
40
-
41
- def assert_new_enough_puppet
42
- unless PluginPackager.command_available?('puppet')
43
- raise("Cannot build package. 'puppet' is not present on the system.")
44
- end
45
-
46
- s = Shell.new('puppet --version')
47
- s.runcommand
48
- actual_version = s.stdout.chomp
49
-
50
- required_version = '3.3.0'
51
- if Util.versioncmp(actual_version, required_version) < 0
52
- raise("Cannot build package. puppet #{required_version} or greater required. We have #{actual_version}.")
53
- end
54
- end
55
-
56
- def make_module
57
- targetdir = File.join(@tmpdir, 'manifests')
58
- FileUtils.mkdir_p(targetdir) unless File.directory?(targetdir)
59
-
60
- # for each subpackage make a subclass
61
- @plugin.packagedata.each do |klass,data|
62
- data[:files].each do |file|
63
- relative_path = File.expand_path(file).gsub(/#{@plugin.target_path}|^\.\//, '')
64
- targetdir = File.join(@tmpdir, 'files', klass.to_s, 'mcollective', File.dirname(relative_path))
65
- FileUtils.mkdir_p(targetdir) unless File.directory?(targetdir)
66
- FileUtils.cp_r(file, targetdir)
67
- end
68
-
69
- @klass = klass.to_s
70
- render_template('_manifest.pp.erb', File.join(@tmpdir, 'manifests', "#{klass}.pp"))
71
- end
72
-
73
- # render all the templates we have
74
- Dir.glob(File.join(@module_template, '*.erb')).each do |template|
75
- filename = File.basename(template, '.erb')
76
- next if filename =~ /^_/ # starting with underscore makes it private
77
- render_template("#{filename}.erb", File.join(@tmpdir, filename))
78
- end
79
- end
80
-
81
- def render_template(template, path)
82
- begin
83
- erb = ERB.new(File.read(File.join(@module_template, template)), nil, '-')
84
- File.open(path, 'w') do |f|
85
- f.puts erb.result(binding)
86
- end
87
- rescue => e
88
- puts "Could not render template to path - '#{path}'"
89
- raise e
90
- end
91
- end
92
-
93
- def run_build
94
- begin
95
- PluginPackager.execute_verbosely(@verbose) do
96
- Dir.chdir(@tmpdir) do
97
- PluginPackager.safe_system('puppet module build')
98
- end
99
- end
100
- rescue => e
101
- puts 'Build process has failed'
102
- raise e
103
- end
104
- end
105
-
106
- # Move built package to cwd
107
- def move_package
108
- begin
109
- package_file = File.join(@tmpdir, 'pkg', "#{@plugin.vendor}-#{@package_name}-#{@plugin.metadata[:version]}.tar.gz")
110
- FileUtils.cp(package_file, '.')
111
- rescue => e
112
- puts 'Could not copy package to working directory'
113
- raise e
114
- end
115
- end
116
-
117
- def cleanup_tmpdirs
118
- begin
119
- FileUtils.rm_r(@tmpdir) if File.directory?(@tmpdir)
120
- rescue => e
121
- puts "Could not remove temporary build directory - '#{@tmpdir}'"
122
- raise e
123
- end
124
- end
125
- end
126
- end
127
- end
@@ -1,59 +0,0 @@
1
- module MCollective
2
- module PluginPackager
3
- # MCollective plugin packager general OS implementation.
4
- class OspackagePackager
5
-
6
- attr_accessor :package, :verbose, :packager, :package_type
7
-
8
- # Create packager object with package parameter containing list of files,
9
- # dependencies and package metadata.
10
- def initialize(package, pluginpath = nil, signature = nil, verbose = false, keep_artifacts = false, module_template = nil)
11
-
12
- if File.exists?("/etc/redhat-release")
13
- @packager = PluginPackager["RpmpackagePackager"].new(package, pluginpath, signature, verbose, keep_artifacts, module_template)
14
- @package_type = "RPM"
15
- elsif File.exists?("/etc/debian_version")
16
- @packager = PluginPackager["DebpackagePackager"].new(package, pluginpath, signature, verbose, keep_artifacts, module_template)
17
- @package_type = "Deb"
18
- else
19
- raise "cannot identify operating system."
20
- end
21
-
22
- @package = package
23
- @verbose = verbose
24
- end
25
-
26
- # Hands over package creation to the detected packager implementation
27
- # based on operating system.
28
- def create_packages
29
- @packager.create_packages
30
- end
31
-
32
- # Displays the package metadata and detected files
33
- def package_information
34
- puts
35
- puts "%30s%s" % ["Plugin information : ", @package.metadata[:name]]
36
- puts "%30s%s" % ["-" * 22, "-" * 22]
37
- puts "%30s%s" % ["Plugin Type : ", @package.plugintype.capitalize]
38
- puts "%30s%s" % ["Package Output Format : ", @package_type]
39
- puts "%30s%s" % ["Version : ", @package.metadata[:version]]
40
- puts "%30s%s" % ["Revision : ", @package.revision]
41
- puts "%30s%s" % ["Vendor : ", @package.vendor]
42
- puts "%30s%s" % ["Post Install Script : ", @package.postinstall] if @package.postinstall
43
- puts "%30s%s" % ["Author : ", @package.metadata[:author]]
44
- puts "%30s%s" % ["License : ", @package.metadata[:license]]
45
- puts "%30s%s" % ["URL : ", @package.metadata[:url]]
46
-
47
- if @package.packagedata.size > 0
48
- @package.packagedata.each_with_index do |values, i|
49
- if i == 0
50
- puts "%30s%s" % ["Identified Packages : ", values[0]]
51
- else
52
- puts "%30s%s" % [" ", values[0]]
53
- end
54
- end
55
- end
56
- end
57
- end
58
- end
59
- end
@@ -1,180 +0,0 @@
1
- module MCollective
2
- module PluginPackager
3
- class RpmpackagePackager
4
- require 'erb'
5
-
6
- def initialize(plugin, pluginpath = nil, signature = nil, verbose = false, keep_artifacts = nil, module_template = nil)
7
- if @buildtool = select_command
8
- @plugin = plugin
9
- @package_name = "#{@plugin.mcname}-#{@plugin.metadata[:name]}"
10
- @package_name_and_version = "#{@package_name}-#{@plugin.metadata[:version]}"
11
- @verbose = verbose
12
- @libdir = pluginpath || '/usr/libexec/mcollective/mcollective/'
13
- @signature = signature
14
- @rpmdir = rpmdir
15
- @srpmdir = srpmdir
16
- @keep_artifacts = keep_artifacts
17
- else
18
- raise("Cannot build package. 'rpmbuild' or 'rpmbuild-md5' is not present on the system")
19
- end
20
- end
21
-
22
- # Determine the build tool present on the system
23
- def select_command
24
- if PluginPackager.command_available?('rpmbuild-md5')
25
- return 'rpmbuild-md5'
26
- elsif PluginPackager.command_available?('rpmbuild')
27
- return 'rpmbuild'
28
- else
29
- return nil
30
- end
31
- end
32
-
33
- def rpmdir
34
- `rpm --eval '%_rpmdir'`.chomp
35
- end
36
-
37
- def srpmdir
38
- `rpm --eval '%_srcrpmdir'`.chomp
39
- end
40
-
41
- # Build Process :
42
- # - create temporary buildroot
43
- # - create the spec file
44
- # - create the tarball
45
- # - run the build script
46
- # - move pacakges to cwd
47
- # - clean up
48
- def create_packages
49
- begin
50
- puts "Building packages for #{@package_name} plugin."
51
-
52
- @tmpdir = Dir.mktmpdir('mcollective_packager')
53
- prepare_tmpdirs
54
-
55
- make_spec_file
56
- run_build
57
- move_packages
58
-
59
- puts "Completed building all packages for #{@package_name} plugin."
60
- ensure
61
- if @keep_artifacts
62
- puts 'Keeping build artifacts'
63
- puts "Build artifacts saved - #{@tmpdir}"
64
- else
65
- cleanup_tmpdirs
66
- end
67
- end
68
- end
69
-
70
- private
71
-
72
- def run_build
73
- begin
74
- tarfile = create_tar
75
- PluginPackager.execute_verbosely(@verbose) do
76
- PluginPackager.safe_system("#{@buildtool} -ta#{" --quiet" unless @verbose}#{" --sign" if @signature} #{tarfile}")
77
- end
78
- rescue => e
79
- puts 'Build process has failed'
80
- raise e
81
- end
82
- end
83
-
84
- # Tar up source
85
- # Expects directory $mcollective-$agent-$version
86
- # Creates file : $tmpbuildroot/$mcollective-$agent-$version
87
- def create_tar
88
- tarfile = File.join(@tmpdir, "#{@package_name_and_version}.tgz")
89
- begin
90
- PluginPackager.execute_verbosely(@verbose) do
91
- Dir.chdir(@tmpdir) do
92
- PluginPackager.safe_system("tar -cvzf #{tarfile} #{@package_name_and_version}")
93
- end
94
- end
95
- rescue => e
96
- puts "Could not create tarball - '#{tarfile}'"
97
- raise e
98
- end
99
- tarfile
100
- end
101
-
102
- # Move rpm's and srpm's to cwd
103
- def move_packages
104
- begin
105
- files_to_copy = []
106
- files_to_copy += Dir.glob(File.join(@rpmdir, 'noarch', "#{@package_name}-*-#{@plugin.metadata[:version]}-#{@plugin.revision}*.noarch.rpm"))
107
- files_to_copy += Dir.glob(File.join(@srpmdir, "#{@package_name}-#{@plugin.metadata[:version]}-#{@plugin.revision}*.src.rpm"))
108
- FileUtils.cp(files_to_copy, '.')
109
- rescue => e
110
- puts 'Could not copy packages to working directory'
111
- raise e
112
- end
113
- end
114
-
115
- # Create the specfile and place as $tmpbuildroot/$mcollective-$agent-$version/$mcollective-$agent-$version.spec
116
- def make_spec_file
117
- spec_file = File.join(@tmpdir, @package_name_and_version, "#{@package_name_and_version}.spec")
118
- begin
119
- spec_template = ERB.new(File.read(File.join(File.dirname(__FILE__), 'templates', 'redhat', 'rpm_spec.erb')), nil, '-')
120
- File.open(spec_file, 'w') do |f|
121
- f.puts spec_template.result(binding)
122
- end
123
- rescue => e
124
- puts "Could not create specfile - '#{spec_file}'"
125
- raise e
126
- end
127
- end
128
-
129
- # Move files contained in the plugin to the correct directory
130
- # relative to the build root.
131
- def prepare_tmpdirs
132
- plugin_files.each do |file|
133
- begin
134
- targetdir = File.join(@tmpdir, @package_name_and_version, @libdir, File.dirname(File.expand_path(file)).gsub(@plugin.target_path, ""))
135
- FileUtils.mkdir_p(targetdir) unless File.directory?(targetdir)
136
- FileUtils.cp_r(file, targetdir)
137
- rescue Errno::EACCES => e
138
- puts "Could not create directory '#{targetdir}'. Permission denied"
139
- raise e
140
- rescue Errno::ENOENT => e
141
- puts "Could not copy file '#{file}' to '#{targetdir}'. File does not exist"
142
- raise e
143
- rescue => e
144
- puts 'Could not prepare temporary build directory'
145
- raise e
146
- end
147
- end
148
- end
149
-
150
- # Extract all the package files from the plugin's package data hash
151
- def plugin_files
152
- files = []
153
- @plugin.packagedata.each do |name, data|
154
- files += data[:files].reject{ |f| File.directory?(f) }
155
- end
156
- files
157
- end
158
-
159
- # Extract the package specific files from the file list and omits directories
160
- def package_files(files)
161
- package_files = []
162
- files.each do |f|
163
- if !File.directory?(f)
164
- package_files << File.join(@libdir, File.expand_path(f).gsub(/#{@plugin.target_path}|\.\//, ''))
165
- end
166
- end
167
- package_files
168
- end
169
-
170
- def cleanup_tmpdirs
171
- begin
172
- FileUtils.rm_r(@tmpdir) if File.directory?(@tmpdir)
173
- rescue => e
174
- puts "Could not remove temporary build directory - '#{@tmpdir}'"
175
- raise e
176
- end
177
- end
178
- end
179
- end
180
- end
@@ -1,7 +0,0 @@
1
- DESTDIR=
2
-
3
- build:
4
-
5
- clean:
6
-
7
- install:
@@ -1,5 +0,0 @@
1
- <%= @package_name -%> (<%= @plugin.metadata[:version]-%>-<%= @plugin.revision-%>) unstable; urgency=low
2
-
3
- * Automated release for <%= @package_name -%> by mco plugin packager.
4
-
5
- -- The Marionette Collective <mcollective-dev@googlegroups.com> <%= Time.new.strftime('%a, %d %b %Y %H:%M:%S %z') %>
@@ -1,15 +0,0 @@
1
- Source: <%= @package_name %>
2
- Homepage: <%= @plugin.metadata[:url] %>
3
- Section: utils
4
- Priority: extra
5
- Build-Depends: debhelper (>= 7), cdbs, dpatch
6
- Maintainer: <%= @plugin.metadata[:author] %>
7
- Standards-Version: 3.9.1
8
- <% @plugin.packagedata.each do |type, data| %>
9
- Package: <%= "#{@package_name}-#{type}" %>
10
- Architecture: all
11
- Depends: <%= build_dependency_string(data) %>
12
- Description: <%= @plugin.metadata[:description]%>
13
- <%= data[:description]%>
14
- .
15
- <% end -%>
@@ -1,8 +0,0 @@
1
- This package was generated by the MCollective plugin packager on
2
- <%= Time.now%>
3
-
4
- Upstream Author:
5
- <%= @plugin.metadata[:author] %> <%= @plugin.metadata[:url] %>
6
-
7
- License:
8
- <%= @plugin.metadata[:license] -%>
@@ -1,6 +0,0 @@
1
- #!/usr/bin/make -f
2
-
3
- include /usr/share/cdbs/1/rules/debhelper.mk
4
- include /usr/share/cdbs/1/rules/dpatch.mk
5
- include /usr/share/cdbs/1/class/makefile.mk
6
- DEB_MAKE_INVOKE = $(DEB_MAKE_ENVVARS) make -f debian/Makefile -C $(DEB_BUILDDIR)
@@ -1,5 +0,0 @@
1
- name '<%= @plugin.vendor %>-<%= @package_name %>'
2
- version '<%= @plugin.metadata[:version] %>'
3
- description '<%= @plugin.metadata[:description] %>'
4
- project_page '<%= @plugin.metadata[:url]%>'
5
- dependency 'puppetlabs/mcollective', '1.x'
@@ -1,37 +0,0 @@
1
- # <%= @package_name %>
2
-
3
- #### Table of Contents
4
-
5
- 1. [Overview](#overview)
6
- 2. [Module Description - What the module does and why it is useful](#module-description)
7
- 3. [Setup - The basics of getting started with <%= @package_name %>](#setup)
8
- * [What the <%= @package_name %> module affects](#what-the-<%= @package_name %>-module-affects)
9
- * [Setup requirements](#setup-requirements)
10
- 4. [Usage - Configuration options and additional functionality](#usage)
11
- 5. [Reference - An under-the-hood peek at what the module is doing and how](#reference)
12
-
13
-
14
- ## Overview
15
-
16
- The <%= @package_name %> module is a module that wraps a source release of the
17
- <%= @plugin.metadata[:name] %> mcollective plugin for use with the
18
- [puppetlabs mcollective](http://forge.puppetlabs.com/puppetlabs/mcollective)
19
- module.
20
-
21
- ## Module description
22
-
23
- ## Usage
24
-
25
- <% @plugin.packagedata.keys.map { |x| x.to_s }.sort.each do |klass| -%>
26
- <%# Don't document common class -%>
27
- <% if klass != "common" -%>
28
- ### class <%= @package_name %>::<%= klass %>
29
-
30
- Installs the <%= klass %> component of the <%= @plugin.metadata[:name] %> plugin.
31
-
32
- ```puppet
33
- include <%= @package_name%>::<%= klass %>
34
- ```
35
- <% end %>
36
- <% end %>
37
-
@@ -1,9 +0,0 @@
1
- #
2
- class <%= @package_name %>::<%= @klass %> {
3
- <% if @plugin.packagedata[:common] && @klass != 'common' %>
4
- include ::<%= @package_name %>::common
5
- <% end %>
6
- mcollective::plugin { '<%= @package_name %>/<%= @klass %>':
7
- source => 'puppet:///modules/<%= @package_name %>/<%= @klass %>',
8
- }
9
- }
@@ -1,63 +0,0 @@
1
- Name: <%= @package_name %>
2
- Summary: <%= @plugin.metadata[:description] %>
3
- Version: <%= @plugin.metadata[:version] %>
4
- Release: <%= @plugin.revision %>%{?dist}
5
- License: <%= @plugin.metadata[:license]%>
6
- URL: <%= @plugin.metadata[:url]%>
7
- Vendor: <%= @plugin.vendor%>
8
- Packager: <%= @plugin.metadata[:author]%>
9
- BuildArch: noarch
10
- Group: System Tools
11
- BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
12
- Source0: <%= @package_name_and_version%>.tgz
13
-
14
- %description
15
- <%= @plugin.metadata[:description] %>
16
-
17
- %prep
18
- %setup
19
-
20
- %build
21
- <% package_files = plugin_files.map{ |f| File.join(@libdir, File.expand_path(f).gsub(/#{File.expand_path(@plugin.path)}|\.\//, '')) } -%>
22
- <% dirs = package_files.map{ |f| File.dirname(f) }.uniq -%>
23
-
24
- %install
25
- rm -rf %{buildroot}
26
- <% dirs.each do |dir| -%>
27
- %{__install} -d -m0755 %{buildroot}<%= dir%>
28
- <% end -%>
29
- <% package_files.each do |file| -%>
30
- %{__install} -m0644 -v <%= (file[0].chr == '/') ? file[1..file.size-1]: file%> %{buildroot}<%=file %>
31
- <% end -%>
32
-
33
- <% @plugin.packagedata.each do |type, data| %>
34
- %package <%= type %>
35
- Summary: <%= @plugin.metadata[:description] %>
36
- <% if data[:plugindependency] %>
37
- Requires: <%= data[:plugindependency][:name] -%> = <%= data[:plugindependency][:version]%>-<%= data[:plugindependency][:revision]%>%{?dist}
38
- <% end -%>
39
- <% PluginPackager.filter_dependencies('redhat', data[:dependencies]).each do |dep|-%>
40
- Requires: <%= dep[:name] -%> <%= ">= #{dep[:version]}" if dep[:version]%><%="-#{dep[:revision]}" if dep[:revision]%>
41
- <% end -%>
42
- %description <%= type %>
43
- <%= data[:description] %>
44
-
45
- %files <%= type %>
46
- %defattr(-, root, root, -)
47
- <% package_files(data[:files]).each do |file| -%>
48
- <%= file %>
49
- <% end -%>
50
- <% end -%>
51
-
52
- <% if @plugin.preinstall -%>
53
- %pre
54
- <%= @plugin.preinstall %>
55
- <% end -%>
56
- <% if @plugin.postinstall -%>
57
- %post
58
- <%= @plugin.postinstall%>
59
- <% end -%>
60
-
61
- %changelog
62
- * <%= Time.now.strftime("%a %b %d %Y") -%> <%= @plugin.metadata[:author]%> - <%= @plugin.metadata[:version]%>-<%= @plugin.revision %>
63
- - Built Package <%= @plugin.metadata[:name] -%>