machinery-tool 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|