choria-mcorpc-support 2.20.5 → 2.21.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mcollective.rb +1 -1
- data/lib/mcollective/application/facts.rb +8 -0
- data/lib/mcollective/application/plugin.rb +19 -7
- data/lib/mcollective/applications.rb +2 -1
- data/lib/mcollective/ddl/agentddl.rb +17 -11
- data/lib/mcollective/ddl/base.rb +34 -20
- data/lib/mcollective/ddl/dataddl.rb +5 -5
- data/lib/mcollective/ddl/discoveryddl.rb +2 -2
- data/lib/mcollective/ddl/validatorddl.rb +1 -1
- data/lib/mcollective/pluginpackager/agent_definition.rb +33 -19
- data/lib/mcollective/pluginpackager/{puppet_module_packager.rb → forge_packager.rb} +57 -50
- data/lib/mcollective/pluginpackager/standard_definition.rb +23 -12
- data/lib/mcollective/pluginpackager/templates/{puppet_module → forge}/README.md.erb +1 -1
- data/lib/mcollective/pluginpackager/templates/{puppet_module → forge}/data/defaults.yaml.erb +0 -0
- data/lib/mcollective/pluginpackager/templates/{puppet_module → forge}/data/plugin.yaml.erb +0 -0
- data/lib/mcollective/pluginpackager/templates/{puppet_module → forge}/hiera.yaml.erb +0 -0
- data/lib/mcollective/pluginpackager/templates/{puppet_module → forge}/manifests/init.pp.erb +2 -0
- data/lib/mcollective/pluginpackager/templates/{puppet_module → forge}/metadata.json.erb +2 -2
- data/lib/mcollective/validator.rb +2 -2
- data/lib/mcollective/validator/array_validator.rb +1 -1
- data/lib/mcollective/validator/ipv4address_validator.rb +5 -7
- data/lib/mcollective/validator/ipv6address_validator.rb +5 -7
- data/lib/mcollective/validator/shellsafe_validator.rb +1 -1
- data/lib/mcollective/validator/typecheck_validator.rb +19 -15
- metadata +11 -25
- data/lib/mcollective/pluginpackager/debpackage_packager.rb +0 -237
- data/lib/mcollective/pluginpackager/modulepackage_packager.rb +0 -127
- data/lib/mcollective/pluginpackager/ospackage_packager.rb +0 -59
- data/lib/mcollective/pluginpackager/rpmpackage_packager.rb +0 -180
- data/lib/mcollective/pluginpackager/templates/debian/Makefile.erb +0 -7
- data/lib/mcollective/pluginpackager/templates/debian/changelog.erb +0 -5
- data/lib/mcollective/pluginpackager/templates/debian/compat.erb +0 -1
- data/lib/mcollective/pluginpackager/templates/debian/control.erb +0 -15
- data/lib/mcollective/pluginpackager/templates/debian/copyright.erb +0 -8
- data/lib/mcollective/pluginpackager/templates/debian/rules.erb +0 -6
- data/lib/mcollective/pluginpackager/templates/module/Modulefile.erb +0 -5
- data/lib/mcollective/pluginpackager/templates/module/README.md.erb +0 -37
- data/lib/mcollective/pluginpackager/templates/module/_manifest.pp.erb +0 -9
- data/lib/mcollective/pluginpackager/templates/redhat/rpm_spec.erb +0 -63
@@ -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,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 +0,0 @@
|
|
1
|
-
7
|
@@ -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,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] -%>
|