machinery-tool 1.7.0 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/NEWS +4 -0
- data/helpers/changed_managed_files.sh +13 -4
- data/helpers/inspector_files.rb +52 -0
- data/lib/cli.rb +5 -2
- data/lib/exceptions.rb +11 -0
- data/lib/generate_html_task.rb +1 -0
- data/lib/helper.rb +8 -0
- data/lib/hint.rb +7 -0
- data/lib/list_task.rb +5 -5
- data/lib/migration.rb +1 -2
- data/lib/remote_system.rb +9 -3
- data/lib/system.rb +11 -7
- data/lib/ui.rb +16 -3
- data/lib/upgrade_format_task.rb +12 -5
- data/lib/version.rb +1 -1
- data/man/generated/machinery.1.gz +0 -0
- data/man/generated/machinery.1.html +1 -1
- data/plugins/services/services_inspector.rb +8 -7
- data/plugins/unmanaged_files/unmanaged_files_inspector.rb +1 -1
- metadata +86 -85
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 40dd521992a7106bb58e670c885ec727c16b69a9
|
4
|
+
data.tar.gz: 1cce8ff538aa83a299d9034167562b3feec0fbbe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 15fded8c72d2b8380cb8064fe6dcc92753a93861cea791f1050cf333e53e4a255bbf959ed1874f101157319be1c9ec641263b5475428e1e1e985c6341cc21a48
|
7
|
+
data.tar.gz: 1c0397494c6eb3dbab3b4829201d06171442b0bb18de2a1bfd47c9778d66e2c7ef183ded8f54361e249283f7f90dd2f9413028184edb80555f018871d93c7a82
|
data/NEWS
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
# Machinery Release Notes
|
2
2
|
|
3
3
|
|
4
|
+
## Version 1.8.0 - Tue May 19 12:33:27 CEST 2015 - mamorales@suse.de
|
5
|
+
|
6
|
+
* Improve error handling when user lacks sudo privileges
|
7
|
+
|
4
8
|
## Version 1.7.0 - Mon May 04 15:36:50 CEST 2015 - aduffeck@suse.de
|
5
9
|
|
6
10
|
* Add experimental option to show comparison of two system descriptions as
|
@@ -16,6 +16,8 @@
|
|
16
16
|
# To contact SUSE about this file by physical or electronic mail,
|
17
17
|
# you may find current contact information at www.suse.com
|
18
18
|
|
19
|
+
# Exit immediately if a command exits with a non-zero status.
|
20
|
+
set -e
|
19
21
|
|
20
22
|
# Print a list of each package with changed managed files followed by a list of
|
21
23
|
# the changed files, e.g.
|
@@ -26,12 +28,19 @@
|
|
26
28
|
# S.5...... c /etc/ntp.conf
|
27
29
|
|
28
30
|
if [ $UID -ne "0" ]; then
|
29
|
-
SUDOPREFIX="sudo"
|
31
|
+
SUDOPREFIX="sudo -n"
|
30
32
|
fi
|
31
33
|
|
32
34
|
for package in `rpm -qa --queryformat "%{NAME}-%{VERSION}\\n"`; do
|
33
|
-
|
34
|
-
|
35
|
-
|
35
|
+
# rpm returns 1 as exit code when modified config files are detected
|
36
|
+
# that's why we explicitly detect if sudo failed
|
37
|
+
OUTPUT=`$SUDOPREFIX rpm -V --nodeps --nodigest --nosignature --nomtime --nolinkto $package 2>&1 || true`;
|
38
|
+
if [ -n "$OUTPUT" ]; then
|
39
|
+
REGEX="^sudo:.*password is required"
|
40
|
+
if [[ "$OUTPUT" =~ $REGEX ]]; then
|
41
|
+
echo "$OUTPUT" >&2
|
42
|
+
exit 1
|
43
|
+
fi
|
44
|
+
echo -e "$package:\\n$OUTPUT";
|
36
45
|
fi;
|
37
46
|
done
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# Copyright (c) 2013-2015 SUSE LLC
|
2
|
+
#
|
3
|
+
# This program is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of version 3 of the GNU General Public License as
|
5
|
+
# published by the Free Software Foundation.
|
6
|
+
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program; if not, contact SUSE LLC.
|
14
|
+
#
|
15
|
+
# To contact SUSE about this file by physical or electronic mail,
|
16
|
+
# you may find current contact information at www.suse.com
|
17
|
+
|
18
|
+
|
19
|
+
# This script creates reference data for integration tests
|
20
|
+
# by inspecting existing machines.
|
21
|
+
# Therefor it generates files with information of each scope.
|
22
|
+
|
23
|
+
# Usage: rake inspector_files[ip-adress,distribution]
|
24
|
+
|
25
|
+
require "fileutils"
|
26
|
+
require "cheetah"
|
27
|
+
|
28
|
+
class ReferenceTestData
|
29
|
+
def initialize
|
30
|
+
@machinery = File.expand_path("../bin/machinery", File.dirname(__FILE__))
|
31
|
+
@test_data_path = File.expand_path("../spec/data/", File.dirname(__FILE__))
|
32
|
+
end
|
33
|
+
|
34
|
+
def inspect(ip_adress)
|
35
|
+
Cheetah.run(@machinery, "inspect", ip_adress, "-n", "referencetestdata", stdout: :capture)
|
36
|
+
end
|
37
|
+
|
38
|
+
def write(destination)
|
39
|
+
Inspector.all_scopes.each do |inspector|
|
40
|
+
output = Cheetah.run(
|
41
|
+
@machinery, "show", destination, "-s", inspector.gsub("_", "-"),
|
42
|
+
"referencetestdata", stdout: :capture
|
43
|
+
)
|
44
|
+
File.write(file_path(inspector, destination), output)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def file_path(inspector, destination)
|
49
|
+
FileUtils.mkdir_p("#{@test_data_path}/#{inspector}")
|
50
|
+
File.join(@test_data_path, inspector, destination)
|
51
|
+
end
|
52
|
+
end
|
data/lib/cli.rb
CHANGED
@@ -40,7 +40,7 @@ class Cli
|
|
40
40
|
end
|
41
41
|
|
42
42
|
post do |global_options,command,options,args|
|
43
|
-
if command.is_a?(GLI::Commands::Help) && !global_options[:version]
|
43
|
+
if command.is_a?(GLI::Commands::Help) && !global_options[:version] && ARGV == ["help"]
|
44
44
|
|
45
45
|
Machinery::Ui.puts "\nMachinery can show hints which guide through a typical workflow."
|
46
46
|
if @config.hints
|
@@ -67,6 +67,8 @@ class Cli
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def self.handle_error(e)
|
70
|
+
Machinery::Ui.kill_pager
|
71
|
+
|
70
72
|
case e
|
71
73
|
when GLI::UnknownCommandArgument, GLI::UnknownGlobalArgument,
|
72
74
|
GLI::UnknownCommand, GLI::BadCommandLine, OptionParser::MissingArgument
|
@@ -128,7 +130,8 @@ class Cli
|
|
128
130
|
|
129
131
|
def self.show_filter_note(scopes, filter)
|
130
132
|
if scopes.any? { |scope| !filter.element_filters_for_scope(scope).empty? }
|
131
|
-
Machinery::Ui.puts "\
|
133
|
+
Machinery::Ui.puts "\nNote: There are filters being applied during inspection. " \
|
134
|
+
"(Use `--verbose` option to show the filters)\n\n"
|
132
135
|
end
|
133
136
|
end
|
134
137
|
|
data/lib/exceptions.rb
CHANGED
@@ -99,6 +99,17 @@ module Machinery
|
|
99
99
|
end
|
100
100
|
end
|
101
101
|
|
102
|
+
class InsufficientPrivileges < MachineryError
|
103
|
+
def initialize(remote_user, host)
|
104
|
+
@remote_user = remote_user
|
105
|
+
@host = host
|
106
|
+
end
|
107
|
+
|
108
|
+
def to_s
|
109
|
+
"The remote user '#{@remote_user}' is not allowed to run 'sudo' on host '#{@host}'."
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
102
113
|
class MigrationError < MachineryError; end
|
103
114
|
|
104
115
|
class InvalidFilter < MachineryError; end
|
data/lib/generate_html_task.rb
CHANGED
data/lib/helper.rb
CHANGED
@@ -31,6 +31,14 @@ module Machinery
|
|
31
31
|
# See also: http://stackoverflow.com/a/21315619
|
32
32
|
s.dup.force_encoding("UTF-8").encode("UTF-16", invalid: :replace).encode("UTF-8")
|
33
33
|
end
|
34
|
+
|
35
|
+
def self.pluralize(text, number)
|
36
|
+
if number > 1 || number == 0
|
37
|
+
text + "s"
|
38
|
+
else
|
39
|
+
text
|
40
|
+
end
|
41
|
+
end
|
34
42
|
end
|
35
43
|
|
36
44
|
def with_c_locale(&block)
|
data/lib/hint.rb
CHANGED
@@ -58,5 +58,12 @@ class Hint
|
|
58
58
|
"To upgrade all system descriptions run:\n" \
|
59
59
|
"#{$0} upgrade-format --all"
|
60
60
|
end
|
61
|
+
|
62
|
+
def share_html_contents(options)
|
63
|
+
dir = options[:directory] || ""
|
64
|
+
index_file = File.join(dir, "index.html")
|
65
|
+
assets_dir = File.join(dir, "assets/")
|
66
|
+
"Share the file: '#{index_file}' and the directory: '#{assets_dir}' as needed."
|
67
|
+
end
|
61
68
|
end
|
62
69
|
end
|
data/lib/list_task.rb
CHANGED
@@ -28,19 +28,19 @@ class ListTask
|
|
28
28
|
show_error("#{name}: incompatible format version. Can not be upgraded.\n", options)
|
29
29
|
elsif e.format_version < SystemDescription::CURRENT_FORMAT_VERSION
|
30
30
|
show_error("#{name}: format version #{e.format_version}, " \
|
31
|
-
"needs to be upgraded
|
31
|
+
"needs to be upgraded.", options)
|
32
32
|
has_incompatible_version = true
|
33
33
|
else
|
34
34
|
show_error("#{name}: format version #{e.format_version}. " \
|
35
|
-
"Please upgrade Machinery to the latest version
|
35
|
+
"Please upgrade Machinery to the latest version.", options)
|
36
36
|
end
|
37
37
|
next
|
38
38
|
rescue Machinery::Errors::SystemDescriptionValidationFailed
|
39
39
|
show_error("#{name}: This description is broken. Use " \
|
40
|
-
"`#{$0} validate #{name}` to see the error message
|
40
|
+
"`#{$0} validate #{name}` to see the error message.", options)
|
41
41
|
next
|
42
42
|
rescue Machinery::Errors::SystemDescriptionError
|
43
|
-
show_error("#{name}: This description is broken
|
43
|
+
show_error("#{name}: This description is broken.", options)
|
44
44
|
next
|
45
45
|
end
|
46
46
|
|
@@ -76,7 +76,7 @@ class ListTask
|
|
76
76
|
scopes << entry
|
77
77
|
end
|
78
78
|
|
79
|
-
Machinery::Ui.puts " #{name}:\n * " + scopes .join("\n * ") + "\n
|
79
|
+
Machinery::Ui.puts " #{name}:\n * " + scopes .join("\n * ") + "\n"
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
data/lib/migration.rb
CHANGED
@@ -88,8 +88,7 @@ class Migration
|
|
88
88
|
end
|
89
89
|
|
90
90
|
if current_version == SystemDescription::CURRENT_FORMAT_VERSION
|
91
|
-
Machinery::Ui.puts "
|
92
|
-
"date, no upgrade necessary."
|
91
|
+
Machinery::Ui.puts "No upgrade necessary."
|
93
92
|
return false
|
94
93
|
end
|
95
94
|
|
data/lib/remote_system.rb
CHANGED
@@ -72,9 +72,15 @@ class RemoteSystem < System
|
|
72
72
|
cheetah_class = LoggedCheetah
|
73
73
|
end
|
74
74
|
|
75
|
-
sudo = "sudo" if options[:privileged] && remote_user != "root"
|
76
|
-
cmds = ["ssh", "#{remote_user}@#{host}", sudo, "LC_ALL=C", *piped_args, options].compact
|
75
|
+
sudo = ["sudo", "-n"] if options[:privileged] && remote_user != "root"
|
76
|
+
cmds = ["ssh", "#{remote_user}@#{host}", sudo, "LC_ALL=C", *piped_args, options].compact.flatten
|
77
77
|
cheetah_class.run(*cmds)
|
78
|
+
rescue Cheetah::ExecutionFailed => e
|
79
|
+
if e.stderr.include?("password is required")
|
80
|
+
raise Machinery::Errors::InsufficientPrivileges.new(remote_user, host)
|
81
|
+
else
|
82
|
+
raise e
|
83
|
+
end
|
78
84
|
end
|
79
85
|
|
80
86
|
# Tries to connect to the remote system as root (without a password or passphrase)
|
@@ -97,7 +103,7 @@ class RemoteSystem < System
|
|
97
103
|
def retrieve_files(filelist, destination)
|
98
104
|
source = "#{remote_user}@#{host}:/"
|
99
105
|
if remote_user != "root"
|
100
|
-
rsync_path = "sudo rsync"
|
106
|
+
rsync_path = "sudo -n rsync"
|
101
107
|
else
|
102
108
|
rsync_path = "rsync"
|
103
109
|
end
|
data/lib/system.rb
CHANGED
@@ -37,14 +37,18 @@ class System
|
|
37
37
|
end
|
38
38
|
|
39
39
|
# checks if the required command can be executed on the target system
|
40
|
-
def check_requirement(
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
40
|
+
def check_requirement(commands, *args)
|
41
|
+
commands = Array(commands)
|
42
|
+
commands.each do |command|
|
43
|
+
begin
|
44
|
+
run_command(command, *args)
|
45
|
+
return command
|
46
|
+
rescue Cheetah::ExecutionFailed
|
47
|
+
end
|
47
48
|
end
|
49
|
+
raise Machinery::Errors::MissingRequirement.new(
|
50
|
+
"Need binary '#{commands.join("' or '")}' to be available on the inspected system."
|
51
|
+
)
|
48
52
|
end
|
49
53
|
|
50
54
|
# Retrieves files specified in filelist from the remote system and create an archive.
|
data/lib/ui.rb
CHANGED
@@ -28,6 +28,11 @@ module Machinery
|
|
28
28
|
def write_output_to_pager(output)
|
29
29
|
@pager ||= IO.popen("$PAGER", "w")
|
30
30
|
|
31
|
+
# cache the pid because it can no longer be retrieved when the
|
32
|
+
# stream is closed (and we sometimes have to kill the process after
|
33
|
+
# it was closed)
|
34
|
+
@pager_pid = @pager.pid
|
35
|
+
|
31
36
|
begin
|
32
37
|
@pager.puts output
|
33
38
|
rescue Errno::EPIPE
|
@@ -39,10 +44,14 @@ module Machinery
|
|
39
44
|
@pager.close if @pager
|
40
45
|
end
|
41
46
|
|
42
|
-
def
|
47
|
+
def kill_pager
|
48
|
+
Process.kill("TERM", @pager_pid) if @pager_pid
|
49
|
+
end
|
50
|
+
|
51
|
+
def print(output)
|
43
52
|
if !use_pager || !$stdout.tty?
|
44
53
|
begin
|
45
|
-
STDOUT.
|
54
|
+
STDOUT.print output
|
46
55
|
rescue Errno::EPIPE
|
47
56
|
# We just ignore broken pipes.
|
48
57
|
end
|
@@ -54,7 +63,7 @@ module Machinery
|
|
54
63
|
LocalSystem.validate_existence_of_package("less")
|
55
64
|
write_output_to_pager(output)
|
56
65
|
rescue Machinery::Errors::MissingRequirement
|
57
|
-
STDOUT.
|
66
|
+
STDOUT.print output
|
58
67
|
end
|
59
68
|
else
|
60
69
|
IO.popen("$PAGER &>/dev/null", "w") { |f| f.close }
|
@@ -70,6 +79,10 @@ module Machinery
|
|
70
79
|
end
|
71
80
|
end
|
72
81
|
|
82
|
+
def puts(output)
|
83
|
+
print output + "\n"
|
84
|
+
end
|
85
|
+
|
73
86
|
def warn(s)
|
74
87
|
STDERR.puts s
|
75
88
|
end
|
data/lib/upgrade_format_task.rb
CHANGED
@@ -34,10 +34,16 @@ class UpgradeFormatTask
|
|
34
34
|
|
35
35
|
descriptions.each do |description|
|
36
36
|
begin
|
37
|
+
hash = Manifest.load(description, store.manifest_path(description)).to_hash
|
37
38
|
Machinery.logger.info "Upgrading description \"#{description}\""
|
38
|
-
Machinery::Ui.
|
39
|
+
Machinery::Ui.print "Reading \"#{description}\" ... "
|
39
40
|
migrated = Migration.migrate_description(store, description, force: options[:force])
|
40
|
-
|
41
|
+
|
42
|
+
if migrated
|
43
|
+
migrations_done += 1
|
44
|
+
Machinery::Ui.puts "Successfully upgraded from version" \
|
45
|
+
" #{hash["meta"]["format_version"]} to #{SystemDescription::CURRENT_FORMAT_VERSION}."
|
46
|
+
end
|
41
47
|
rescue StandardError => e
|
42
48
|
errors.push("Upgrading description \"#{description}\" failed:\n#{e}")
|
43
49
|
end
|
@@ -52,12 +58,13 @@ class UpgradeFormatTask
|
|
52
58
|
|
53
59
|
if options[:all]
|
54
60
|
if migrations_done > 0
|
55
|
-
Machinery::Ui.puts
|
61
|
+
Machinery::Ui.puts(
|
62
|
+
"Upgraded #{migrations_done} " \
|
63
|
+
"#{Machinery::pluralize("system description", migrations_done)}."
|
64
|
+
)
|
56
65
|
else
|
57
66
|
Machinery::Ui.puts "No system descriptions were upgraded."
|
58
67
|
end
|
59
|
-
elsif migrations_done > 0
|
60
|
-
Machinery::Ui.puts "System description \"#{name}\" successfully upgraded."
|
61
68
|
end
|
62
69
|
end
|
63
70
|
end
|
data/lib/version.rb
CHANGED
Binary file
|
@@ -892,7 +892,7 @@ via <code>ssh-copy-id</code> to the inspected host, e.g.: <code>ssh-copy-id root
|
|
892
892
|
<li><p>When inspecting as non-root the user has to have the following command
|
893
893
|
whitelist given in the sudoers file:</p>
|
894
894
|
|
895
|
-
<p>machinery ALL=(ALL) NOPASSWD: /usr/bin/find,/usr/bin/cat,/usr/bin/rsync,/bin/rpm -V *,/bin/tar --create *</p></li>
|
895
|
+
<p>machinery ALL=(ALL) NOPASSWD: /usr/bin/find,/usr/bin/cat,/bin/cat,/usr/bin/rsync,/bin/rpm -V *,/bin/tar --create *</p></li>
|
896
896
|
</ul>
|
897
897
|
|
898
898
|
|
@@ -73,7 +73,7 @@ class ServicesInspector < Inspector
|
|
73
73
|
# an error, on Red Hat it doesn't.
|
74
74
|
#
|
75
75
|
begin
|
76
|
-
@system.run_command("chkconfig", "--version")
|
76
|
+
@system.run_command("/sbin/chkconfig", "--version")
|
77
77
|
services = parse_redhat_chkconfig
|
78
78
|
rescue
|
79
79
|
services = parse_suse_chkconfig
|
@@ -83,9 +83,11 @@ class ServicesInspector < Inspector
|
|
83
83
|
end
|
84
84
|
|
85
85
|
def parse_suse_chkconfig
|
86
|
-
|
86
|
+
# check if chkconfig is available otherwise use /sbin/chkconfig
|
87
|
+
# this fixes issue on sles11sp3 where chkconfig isn't in /usr/bin
|
88
|
+
chkconfig = @system.check_requirement(["chkconfig", "/sbin/chkconfig"], "--help")
|
87
89
|
output = @system.run_command(
|
88
|
-
|
90
|
+
chkconfig,
|
89
91
|
"--allservices",
|
90
92
|
:stdout => :capture
|
91
93
|
)
|
@@ -97,15 +99,14 @@ class ServicesInspector < Inspector
|
|
97
99
|
end
|
98
100
|
|
99
101
|
def parse_redhat_chkconfig
|
100
|
-
@system.check_requirement("
|
101
|
-
@system.check_requirement("runlevel")
|
102
|
+
@system.check_requirement("/sbin/runlevel")
|
102
103
|
_, runlevel = @system.run_command(
|
103
|
-
"runlevel",
|
104
|
+
"/sbin/runlevel",
|
104
105
|
stdout: :capture
|
105
106
|
).split(" ")
|
106
107
|
|
107
108
|
output = @system.run_command(
|
108
|
-
"chkconfig", "--list",
|
109
|
+
"/sbin/chkconfig", "--list",
|
109
110
|
stdout: :capture
|
110
111
|
)
|
111
112
|
|
@@ -145,7 +145,7 @@ class UnmanagedFilesInspector < Inspector
|
|
145
145
|
excluded_files = []
|
146
146
|
|
147
147
|
# compute command line
|
148
|
-
cmd = ["find", dir, "-xdev", "-maxdepth", "1", "-maxdepth", depth]
|
148
|
+
cmd = ["find", dir, "-xdev", "-maxdepth", "1", "-maxdepth", depth.to_s]
|
149
149
|
cmd += ["-printf", '%y\0%P\0%l\0']
|
150
150
|
|
151
151
|
out = ""
|
metadata
CHANGED
@@ -1,181 +1,181 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: machinery-tool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SUSE
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cheetah
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 0.4.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.4.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: json
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 1.8.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 1.8.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: abstract_method
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 1.2.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 1.2.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: nokogiri
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 1.6.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 1.6.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: gli
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: 2.11.0
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - ~>
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 2.11.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: json-schema
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - ~>
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: 2.2.4
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - ~>
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 2.2.4
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: haml
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - ~>
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: 4.0.5
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - ~>
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: 4.0.5
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: kramdown
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - ~>
|
115
|
+
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: 1.3.3
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - ~>
|
122
|
+
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 1.3.3
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: tilt
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '2.0'
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- -
|
136
|
+
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '2.0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: ronn
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- -
|
143
|
+
- - ">="
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: 0.7.3
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- -
|
150
|
+
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: 0.7.3
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: rake
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- -
|
157
|
+
- - ">="
|
158
158
|
- !ruby/object:Gem::Version
|
159
159
|
version: '0'
|
160
160
|
type: :development
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- -
|
164
|
+
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: packaging_rake_tasks
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
|
-
- -
|
171
|
+
- - ">="
|
172
172
|
- !ruby/object:Gem::Version
|
173
173
|
version: '0'
|
174
174
|
type: :development
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
|
-
- -
|
178
|
+
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
181
|
description: Machinery is a systems management toolkit for Linux. It supports configuration
|
@@ -188,11 +188,65 @@ executables:
|
|
188
188
|
extensions: []
|
189
189
|
extra_rdoc_files: []
|
190
190
|
files:
|
191
|
+
- COPYING
|
192
|
+
- NEWS
|
193
|
+
- bin/machinery
|
194
|
+
- export_helpers/autoyast_export_readme.md
|
195
|
+
- export_helpers/kiwi_export_readme.md
|
196
|
+
- export_helpers/merge_users_and_groups.pl.erb
|
197
|
+
- export_helpers/unmanaged_files_autoyast_excludes
|
198
|
+
- export_helpers/unmanaged_files_kiwi_excludes
|
199
|
+
- helpers/changed_managed_files.sh
|
200
|
+
- helpers/default_filters.json
|
201
|
+
- helpers/filter-packages-for-build.yaml
|
202
|
+
- helpers/inspector_files.rb
|
203
|
+
- helpers/yum_repositories.py
|
204
|
+
- html/assets/angular-sanitize.min.js
|
205
|
+
- html/assets/angular.min.js
|
206
|
+
- html/assets/arrow_down.png
|
207
|
+
- html/assets/arrow_up.png
|
208
|
+
- html/assets/bootstrap-popover.js
|
209
|
+
- html/assets/bootstrap-tooltip.js
|
210
|
+
- html/assets/bootstrap.min.css
|
211
|
+
- html/assets/collapse.js
|
212
|
+
- html/assets/compare/machinery-compare.js
|
213
|
+
- html/assets/compare/machinery.js
|
214
|
+
- html/assets/jquery-2.1.1.min.js
|
215
|
+
- html/assets/logo-changed-managed-files-small.png
|
216
|
+
- html/assets/logo-changed-managed-files.png
|
217
|
+
- html/assets/logo-config-files-small.png
|
218
|
+
- html/assets/logo-config-files.png
|
219
|
+
- html/assets/logo-groups-small.png
|
220
|
+
- html/assets/logo-groups.png
|
221
|
+
- html/assets/logo-os-small.png
|
222
|
+
- html/assets/logo-os.png
|
223
|
+
- html/assets/logo-packages-small.png
|
224
|
+
- html/assets/logo-packages.png
|
225
|
+
- html/assets/logo-patterns-small.png
|
226
|
+
- html/assets/logo-patterns.png
|
227
|
+
- html/assets/logo-repositories-small.png
|
228
|
+
- html/assets/logo-repositories.png
|
229
|
+
- html/assets/logo-services-small.png
|
230
|
+
- html/assets/logo-services.png
|
231
|
+
- html/assets/logo-unmanaged-files-small.png
|
232
|
+
- html/assets/logo-unmanaged-files.png
|
233
|
+
- html/assets/logo-users-small.png
|
234
|
+
- html/assets/logo-users.png
|
235
|
+
- html/assets/machinery-base.css
|
236
|
+
- html/assets/machinery.css
|
237
|
+
- html/assets/reset.png
|
238
|
+
- html/assets/show/machinery-show.js
|
239
|
+
- html/assets/show/machinery.js
|
240
|
+
- html/assets/transition.js
|
241
|
+
- html/assets/wheels_horizontal.png
|
242
|
+
- html/comparison.html.haml
|
243
|
+
- html/index.html.haml
|
191
244
|
- lib/analyze_config_file_diffs_task.rb
|
192
245
|
- lib/array.rb
|
193
246
|
- lib/autoyast.rb
|
194
247
|
- lib/build_task.rb
|
195
248
|
- lib/changed_rpm_files_helper.rb
|
249
|
+
- lib/cli.rb
|
196
250
|
- lib/compare_task.rb
|
197
251
|
- lib/config.rb
|
198
252
|
- lib/config_base.rb
|
@@ -243,9 +297,10 @@ files:
|
|
243
297
|
- lib/ui.rb
|
244
298
|
- lib/upgrade_format_task.rb
|
245
299
|
- lib/validate_task.rb
|
246
|
-
- lib/zypper.rb
|
247
|
-
- lib/cli.rb
|
248
300
|
- lib/version.rb
|
301
|
+
- lib/zypper.rb
|
302
|
+
- man/generated/machinery.1.gz
|
303
|
+
- man/generated/machinery.1.html
|
249
304
|
- plugins/changed_managed_files/changed_managed_files.md
|
250
305
|
- plugins/changed_managed_files/changed_managed_files_inspector.rb
|
251
306
|
- plugins/changed_managed_files/changed_managed_files_model.rb
|
@@ -316,65 +371,11 @@ files:
|
|
316
371
|
- plugins/users/users_inspector.rb
|
317
372
|
- plugins/users/users_model.rb
|
318
373
|
- plugins/users/users_renderer.rb
|
319
|
-
- bin/machinery
|
320
|
-
- man/generated/machinery.1.gz
|
321
|
-
- man/generated/machinery.1.html
|
322
|
-
- NEWS
|
323
|
-
- COPYING
|
324
|
-
- helpers/changed_managed_files.sh
|
325
|
-
- helpers/default_filters.json
|
326
|
-
- helpers/filter-packages-for-build.yaml
|
327
|
-
- helpers/yum_repositories.py
|
328
|
-
- export_helpers/autoyast_export_readme.md
|
329
|
-
- export_helpers/kiwi_export_readme.md
|
330
|
-
- export_helpers/merge_users_and_groups.pl.erb
|
331
|
-
- export_helpers/unmanaged_files_autoyast_excludes
|
332
|
-
- export_helpers/unmanaged_files_kiwi_excludes
|
333
374
|
- schema/migrations/migrate1to2.rb
|
334
375
|
- schema/migrations/migrate2to3.rb
|
335
376
|
- schema/system-description-global.schema-v1.json
|
336
377
|
- schema/system-description-global.schema-v2.json
|
337
378
|
- schema/system-description-global.schema-v3.json
|
338
|
-
- html/assets/angular-sanitize.min.js
|
339
|
-
- html/assets/angular.min.js
|
340
|
-
- html/assets/arrow_down.png
|
341
|
-
- html/assets/arrow_up.png
|
342
|
-
- html/assets/bootstrap-popover.js
|
343
|
-
- html/assets/bootstrap-tooltip.js
|
344
|
-
- html/assets/bootstrap.min.css
|
345
|
-
- html/assets/collapse.js
|
346
|
-
- html/assets/compare/machinery-compare.js
|
347
|
-
- html/assets/compare/machinery.js
|
348
|
-
- html/assets/jquery-2.1.1.min.js
|
349
|
-
- html/assets/logo-changed-managed-files-small.png
|
350
|
-
- html/assets/logo-changed-managed-files.png
|
351
|
-
- html/assets/logo-config-files-small.png
|
352
|
-
- html/assets/logo-config-files.png
|
353
|
-
- html/assets/logo-groups-small.png
|
354
|
-
- html/assets/logo-groups.png
|
355
|
-
- html/assets/logo-os-small.png
|
356
|
-
- html/assets/logo-os.png
|
357
|
-
- html/assets/logo-packages-small.png
|
358
|
-
- html/assets/logo-packages.png
|
359
|
-
- html/assets/logo-patterns-small.png
|
360
|
-
- html/assets/logo-patterns.png
|
361
|
-
- html/assets/logo-repositories-small.png
|
362
|
-
- html/assets/logo-repositories.png
|
363
|
-
- html/assets/logo-services-small.png
|
364
|
-
- html/assets/logo-services.png
|
365
|
-
- html/assets/logo-unmanaged-files-small.png
|
366
|
-
- html/assets/logo-unmanaged-files.png
|
367
|
-
- html/assets/logo-users-small.png
|
368
|
-
- html/assets/logo-users.png
|
369
|
-
- html/assets/machinery-base.css
|
370
|
-
- html/assets/machinery.css
|
371
|
-
- html/assets/reset.png
|
372
|
-
- html/assets/show/machinery-show.js
|
373
|
-
- html/assets/show/machinery.js
|
374
|
-
- html/assets/transition.js
|
375
|
-
- html/assets/wheels_horizontal.png
|
376
|
-
- html/comparison.html.haml
|
377
|
-
- html/index.html.haml
|
378
379
|
homepage: http://machinery-project.org
|
379
380
|
licenses:
|
380
381
|
- GPL-3.0
|
@@ -385,17 +386,17 @@ require_paths:
|
|
385
386
|
- lib
|
386
387
|
required_ruby_version: !ruby/object:Gem::Requirement
|
387
388
|
requirements:
|
388
|
-
- -
|
389
|
+
- - ">="
|
389
390
|
- !ruby/object:Gem::Version
|
390
391
|
version: 1.9.2
|
391
392
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
392
393
|
requirements:
|
393
|
-
- -
|
394
|
+
- - ">="
|
394
395
|
- !ruby/object:Gem::Version
|
395
396
|
version: 1.3.6
|
396
397
|
requirements: []
|
397
398
|
rubyforge_project:
|
398
|
-
rubygems_version: 2.
|
399
|
+
rubygems_version: 2.2.2
|
399
400
|
signing_key:
|
400
401
|
specification_version: 4
|
401
402
|
summary: Systems management toolkit
|