machinery-tool 1.14.0 → 1.14.1
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/.git_revision +1 -1
- data/NEWS +10 -0
- data/html/assets/compare/machinery.js +1 -0
- data/html/assets/jquery.searcher.min.js +5 -0
- data/html/assets/machinery.css +3 -0
- data/html/assets/show/machinery.js +10 -4
- data/html/comparison.html.haml +18 -652
- data/html/index.html.haml +93 -431
- data/html/partials/changed_managed_files.html.haml +41 -0
- data/html/partials/compare/alert.html.haml +22 -0
- data/html/partials/compare/changed_managed_file_list.html.haml +26 -0
- data/html/partials/compare/changed_managed_files.html.haml +57 -0
- data/html/partials/compare/config_file_list.html.haml +26 -0
- data/html/partials/compare/config_files.html.haml +54 -0
- data/html/partials/compare/group_list.html.haml +14 -0
- data/html/partials/compare/groups.html.haml +52 -0
- data/html/partials/compare/os.html.haml +32 -0
- data/html/partials/compare/os_table.html.haml +10 -0
- data/html/partials/compare/package_list.html.haml +23 -0
- data/html/partials/compare/packages.html.haml +66 -0
- data/html/partials/compare/pattern_list.html.haml +12 -0
- data/html/partials/compare/patterns.html.haml +53 -0
- data/html/partials/compare/repositories.html.haml +51 -0
- data/html/partials/compare/repository_list.html.haml +28 -0
- data/html/partials/compare/service_list.html.haml +11 -0
- data/html/partials/compare/services.html.haml +56 -0
- data/html/partials/compare/unmanaged_file_list.html.haml +13 -0
- data/html/partials/compare/unmanaged_files.html.haml +59 -0
- data/html/partials/compare/user_list.html.haml +18 -0
- data/html/partials/compare/users.html.haml +52 -0
- data/html/partials/config_files.html.haml +57 -0
- data/html/partials/groups.html.haml +25 -0
- data/html/partials/os.html.haml +26 -0
- data/html/partials/packages.html.haml +30 -0
- data/html/partials/patterns.html.haml +23 -0
- data/html/partials/repositories.html.haml +35 -0
- data/html/partials/scope_header.html.haml +17 -0
- data/html/partials/services.html.haml +23 -0
- data/html/partials/unmanaged_files.html.haml +28 -0
- data/html/partials/users.html.haml +29 -0
- data/lib/cli.rb +48 -40
- data/lib/exceptions.rb +7 -0
- data/lib/helper.rb +21 -0
- data/lib/hint.rb +1 -1
- data/lib/html.rb +9 -1
- data/lib/scope_file_access_archive.rb +1 -2
- data/lib/scope_file_access_flat.rb +1 -2
- data/lib/server.rb +104 -50
- data/lib/version.rb +1 -1
- data/machinery-helper/version.go +1 -1
- data/man/generated/machinery.1.gz +0 -0
- data/man/generated/machinery.1.html +106 -16
- metadata +47 -18
- data/html/assets/angular-sanitize.min.js +0 -16
- data/html/assets/angular.min.js +0 -251
- data/html/assets/compare/machinery-compare.js +0 -100
- data/html/assets/show/machinery-show.js +0 -72
@@ -74,7 +74,6 @@ module ScopeFileAccessArchive
|
|
74
74
|
content = file_content(system_file)
|
75
75
|
return false if content.empty?
|
76
76
|
|
77
|
-
|
78
|
-
!output.include?("ASCII")
|
77
|
+
Machinery.content_is_binary?(content.slice(0, 1024))
|
79
78
|
end
|
80
79
|
end
|
@@ -30,8 +30,7 @@ module ScopeFileAccessFlat
|
|
30
30
|
path = system_file.scope.file_path(system_file)
|
31
31
|
return false if File.zero?(path)
|
32
32
|
|
33
|
-
|
34
|
-
!output.include?("ASCII")
|
33
|
+
Machinery.content_is_binary?(File.read(path))
|
35
34
|
end
|
36
35
|
|
37
36
|
def has_file?(name)
|
data/lib/server.rb
CHANGED
@@ -17,11 +17,88 @@
|
|
17
17
|
|
18
18
|
class Server < Sinatra::Base
|
19
19
|
module Helpers
|
20
|
+
def render_partial(partial, locals = {})
|
21
|
+
source = File.read(File.join(Machinery::ROOT, "html/partials/#{partial}.html.haml"))
|
22
|
+
haml source, locals: locals
|
23
|
+
end
|
24
|
+
|
25
|
+
def render_scope(scope)
|
26
|
+
render_partial scope, scope => @description[scope]
|
27
|
+
end
|
28
|
+
|
29
|
+
def scope_meta_info(scope)
|
30
|
+
return "" if !@description[scope]
|
31
|
+
|
32
|
+
" (" \
|
33
|
+
"inspected host: '#{@description[scope].meta.hostname}', " \
|
34
|
+
"at: #{DateTime.parse(@description[scope].meta.modified).strftime("%F %T")})"
|
35
|
+
end
|
36
|
+
|
20
37
|
def scope_help(scope)
|
21
38
|
text = File.read(File.join(Machinery::ROOT, "plugins", "#{scope}/#{scope}.md"))
|
22
39
|
Kramdown::Document.new(text).to_html
|
23
40
|
end
|
24
41
|
|
42
|
+
def safe_length(object, attribute)
|
43
|
+
if object && collection = object.send(attribute)
|
44
|
+
collection.length
|
45
|
+
else
|
46
|
+
0
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def only_in_a
|
51
|
+
"<h3>Only in '#{@description_a.name}':</h3>"
|
52
|
+
end
|
53
|
+
|
54
|
+
def only_in_b
|
55
|
+
"<h3>Only in '#{@description_b.name}':</h3>"
|
56
|
+
end
|
57
|
+
|
58
|
+
def in_both
|
59
|
+
"<h3>In both descriptions:</h3>"
|
60
|
+
end
|
61
|
+
|
62
|
+
def changed
|
63
|
+
"<h3>In both with different attributes:</h3>"
|
64
|
+
end
|
65
|
+
|
66
|
+
def changed_packages
|
67
|
+
changed = []
|
68
|
+
@diff["packages"].changed.each do |change|
|
69
|
+
changes = []
|
70
|
+
relevant_attributes = ["version", "vendor", "arch"]
|
71
|
+
|
72
|
+
if change[0].version == change[1].version
|
73
|
+
relevant_attributes.push("release")
|
74
|
+
if change[0].release == change[1].release
|
75
|
+
relevant_attributes.push("checksum")
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
relevant_attributes.each do |attribute|
|
80
|
+
if change[0][attribute] != change[1][attribute]
|
81
|
+
changes.push(attribute + ": " + change[0][attribute] + " ↔ " + change[1][attribute])
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
changed.push(change[0].name + " (" + changes.join(", ") + ")")
|
86
|
+
end
|
87
|
+
changed
|
88
|
+
end
|
89
|
+
|
90
|
+
def diffable_unmanaged_files
|
91
|
+
return @diffable_unmanaged_files if @diffable_unmanaged_files
|
92
|
+
|
93
|
+
return [] if !@diff["unmanaged_files"] || !@diff["unmanaged_files"].only_in1 ||
|
94
|
+
!@diff["unmanaged_files"].only_in2
|
95
|
+
|
96
|
+
files_in_1 = @diff["unmanaged_files"].only_in1.files.select(&:file?).map(&:name)
|
97
|
+
files_in_2 = @diff["unmanaged_files"].only_in2.files.select(&:file?).map(&:name)
|
98
|
+
|
99
|
+
@diffable_unmanaged_files = files_in_1 & files_in_2
|
100
|
+
end
|
101
|
+
|
25
102
|
def diff_to_object(diff)
|
26
103
|
diff = Machinery.scrub(diff)
|
27
104
|
lines = diff.lines[2..-1]
|
@@ -79,29 +156,6 @@ class Server < Sinatra::Base
|
|
79
156
|
|
80
157
|
helpers Helpers
|
81
158
|
|
82
|
-
get "/descriptions/:id.js" do
|
83
|
-
description = SystemDescription.load(params[:id], settings.system_description_store)
|
84
|
-
diffs_dir = description.scope_file_store("analyze/config_file_diffs").path
|
85
|
-
if description.config_files && diffs_dir
|
86
|
-
# Enrich description with the config file diffs
|
87
|
-
description.config_files.files.each do |file|
|
88
|
-
path = File.join(diffs_dir, file.name + ".diff")
|
89
|
-
file.diff = diff_to_object(File.read(path)) if File.exists?(path)
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
# Enrich file information with downloadable flag
|
94
|
-
["config_files", "changed_managed_files", "unmanaged_files"].each do |scope|
|
95
|
-
next if !description[scope]
|
96
|
-
|
97
|
-
description[scope].files.each do |file|
|
98
|
-
file.downloadable = file.on_disk?
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
description.to_hash.to_json
|
103
|
-
end
|
104
|
-
|
105
159
|
get "/descriptions/:id/files/:scope/*" do
|
106
160
|
description = SystemDescription.load(params[:id], settings.system_description_store)
|
107
161
|
filename = File.join("/", params["splat"].first)
|
@@ -122,41 +176,31 @@ class Server < Sinatra::Base
|
|
122
176
|
content
|
123
177
|
end
|
124
178
|
|
125
|
-
get "/compare/:a/:b
|
126
|
-
description_a = SystemDescription.load(params[:a], settings.system_description_store)
|
127
|
-
description_b = SystemDescription.load(params[:b], settings.system_description_store)
|
179
|
+
get "/compare/:a/:b" do
|
180
|
+
@description_a = SystemDescription.load(params[:a], settings.system_description_store)
|
181
|
+
@description_b = SystemDescription.load(params[:b], settings.system_description_store)
|
128
182
|
|
129
|
-
|
130
|
-
|
131
|
-
description_a: description_a.name,
|
132
|
-
description_b: description_b.name,
|
133
|
-
}
|
134
|
-
}
|
183
|
+
@meta = {}
|
184
|
+
@diff = {}
|
135
185
|
|
136
186
|
Inspector.all_scopes.each do |scope|
|
137
|
-
if description_a[scope] && description_b[scope]
|
138
|
-
|
139
|
-
diff[scope] = comparison.as_json
|
187
|
+
if @description_a[scope] && @description_b[scope]
|
188
|
+
@diff[scope] = Comparison.compare_scope(@description_a, @description_b, scope)
|
140
189
|
else
|
141
|
-
|
190
|
+
@meta[:uninspected] ||= Hash.new
|
142
191
|
|
143
|
-
if
|
144
|
-
|
145
|
-
|
192
|
+
if !@description_a[scope] && @description_b[scope]
|
193
|
+
@meta[:uninspected][@description_a.name] ||= Array.new
|
194
|
+
@meta[:uninspected][@description_a.name] << scope
|
146
195
|
end
|
147
|
-
if
|
148
|
-
|
149
|
-
|
196
|
+
if !@description_b[scope] && @description_a[scope]
|
197
|
+
@meta[:uninspected][@description_b.name] ||= Array.new
|
198
|
+
@meta[:uninspected][@description_b.name] << scope
|
150
199
|
end
|
151
200
|
end
|
152
201
|
end
|
153
202
|
|
154
|
-
|
155
|
-
end
|
156
|
-
|
157
|
-
get "/compare/:a/:b" do
|
158
|
-
haml File.read(File.join(Machinery::ROOT, "html/comparison.html.haml")),
|
159
|
-
locals: { description_a: params[:a], description_b: params[:b] }
|
203
|
+
haml File.read(File.join(Machinery::ROOT, "html/comparison.html.haml"))
|
160
204
|
end
|
161
205
|
|
162
206
|
get "/compare/:a/:b/files/:scope/*" do
|
@@ -175,7 +219,17 @@ class Server < Sinatra::Base
|
|
175
219
|
end
|
176
220
|
|
177
221
|
get "/:id" do
|
178
|
-
|
179
|
-
|
222
|
+
@description = SystemDescription.load(params[:id], settings.system_description_store)
|
223
|
+
|
224
|
+
diffs_dir = @description.scope_file_store("analyze/config_file_diffs").path
|
225
|
+
if @description.config_files && diffs_dir
|
226
|
+
# Enrich description with the config file diffs
|
227
|
+
@description.config_files.files.each do |file|
|
228
|
+
path = File.join(diffs_dir, file.name + ".diff")
|
229
|
+
file.diff = diff_to_object(File.read(path)) if File.exists?(path)
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
haml File.read(File.join(Machinery::ROOT, "html/index.html.haml"))
|
180
234
|
end
|
181
235
|
end
|
data/lib/version.rb
CHANGED
data/machinery-helper/version.go
CHANGED
Binary file
|
@@ -67,6 +67,7 @@
|
|
67
67
|
<a href="#export-autoyast-Export-System-Description-as-AutoYasST-profile">export-autoyast — Export System Description as AutoYasST profile</a>
|
68
68
|
<a href="#export-kiwi-Export-System-Description-as-KIWI-Image-Description">export-kiwi — Export System Description as KIWI Image Description</a>
|
69
69
|
<a href="#inspect-Inspect-Running-System">inspect — Inspect Running System</a>
|
70
|
+
<a href="#inspect-container-Inspect-Container">inspect-container — Inspect Container</a>
|
70
71
|
<a href="#list-List-System-Descriptions">list — List System Descriptions</a>
|
71
72
|
<a href="#man-Shows-Man-Page">man — Shows Man Page</a>
|
72
73
|
<a href="#move-Move-System-Description">move — Move System Description</a>
|
@@ -900,6 +901,105 @@ configuration files are saved:</p>
|
|
900
901
|
</ul>
|
901
902
|
|
902
903
|
|
904
|
+
<h2 id="inspect-container-Inspect-Container">inspect-container — Inspect Container</h2>
|
905
|
+
|
906
|
+
<h3 id="SYNOPSIS">SYNOPSIS</h3>
|
907
|
+
|
908
|
+
<p><code>machinery inspect-container</code> <a href="#OPTIONS" title="OPTIONS" data-bare-link="true">OPTIONS</a> IMAGENAME</p>
|
909
|
+
|
910
|
+
<p><code>machinery inspect-container</code> <a href="#OPTIONS" title="OPTIONS" data-bare-link="true">OPTIONS</a> IMAGEID</p>
|
911
|
+
|
912
|
+
<p><code>machinery</code> help inspect-container</p>
|
913
|
+
|
914
|
+
<h3 id="DESCRIPTION">DESCRIPTION</h3>
|
915
|
+
|
916
|
+
<p>The <code>inspect-container</code> command inspects a container image. It creates and starts the container from the provided image before inspection
|
917
|
+
and generates a system description from the gathered data. After the inspection the container will be killed and removed again.
|
918
|
+
This approach ensures that no containers and images are affected by the inspection.</p>
|
919
|
+
|
920
|
+
<p>Right now we support only images from the type <code>docker</code>.</p>
|
921
|
+
|
922
|
+
<p>The system data is structured into scopes, controlled by the
|
923
|
+
<code>--scope</code> option.</p>
|
924
|
+
|
925
|
+
<p><strong>Note</strong>:
|
926
|
+
Machinery will always inspect all specified scopes, and skip scopes which
|
927
|
+
trigger errors.</p>
|
928
|
+
|
929
|
+
<h3 id="ARGUMENTS">ARGUMENTS</h3>
|
930
|
+
|
931
|
+
<dl>
|
932
|
+
<dt><code>IMAGENAME / IMAGEID</code> (required)</dt><dd>The name or id of the image to be inspected. The provided name or id will also be
|
933
|
+
used as the name of the stored system description unless another name is
|
934
|
+
provided with the <code>--name</code> option.</dd>
|
935
|
+
</dl>
|
936
|
+
|
937
|
+
|
938
|
+
<h3 id="OPTIONS">OPTIONS</h3>
|
939
|
+
|
940
|
+
<dl>
|
941
|
+
<dt><code>-n NAME</code>, <code>--name=NAME</code> (optional)</dt><dd><p>Store the system description under the specified name.</p></dd>
|
942
|
+
<dt><code>-s SCOPE</code>, <code>--scope=SCOPE</code> (optional)</dt><dd><p>Inspect image for specified scope.
|
943
|
+
See the <a href="#Scopes" data-bare-link="true">Scope section</a> for more information.</p></dd>
|
944
|
+
<dt><code>-e SCOPE</code>, <code>--exclude-scope=EXCLUDE-SCOPE</code> (optional)</dt><dd><p>Inspect image for all scopes except the specified scope.
|
945
|
+
See the <a href="#Scopes" data-bare-link="true">Scope section</a> for more information.</p></dd>
|
946
|
+
<dt><code>-x</code>, <code>--extract-files</code> (optional)</dt><dd><p>Extract changed configuration and unmanaged files from the inspected container.
|
947
|
+
Shortcut for the combination of <code>--extract-changed-config-files</code>,
|
948
|
+
<code>--extract-unmanaged-files</code>, and <code>--extract-changed-managed-files</code></p></dd>
|
949
|
+
<dt><code>--extract-changed-config-files</code> (optional)</dt><dd><p>Extract changed configuration files from the inspected image.</p></dd>
|
950
|
+
<dt><code>--extract-unmanaged-files</code> (optional)</dt><dd><p>Extract unmanaged files from the inspected image.</p></dd>
|
951
|
+
<dt><code>--extract-changed-managed-files</code> (optional)</dt><dd><p>Extract changed managed files from inspected image.</p></dd>
|
952
|
+
<dt><code>--skip-files</code> (optional)</dt><dd><p>Do not consider given files or directories during inspection. Either provide
|
953
|
+
one file or directory name or a list of names separated by commas. You can
|
954
|
+
also point to a file which contains a list of files to filter (one per line)
|
955
|
+
by adding an '@' before the path, e.g.</p>
|
956
|
+
|
957
|
+
<p> $ <code>machinery</code> inspect-container --skip-files=@/path/to/filter_file mycontainer</p>
|
958
|
+
|
959
|
+
<p>If a filename contains a comma it needs to be escaped, e.g.</p>
|
960
|
+
|
961
|
+
<p> $ <code>machinery</code> inspect-container --skip-files=/file\,with_comma mycontainer</p>
|
962
|
+
|
963
|
+
<p><strong>Note</strong>: File or directory names are not expanded, e.g. '../path' is taken
|
964
|
+
literally and not expanded.</p></dd>
|
965
|
+
<dt><code>--verbose</code> (optional)</dt><dd><p>Display the filters which are used during inspection.</p></dd>
|
966
|
+
</dl>
|
967
|
+
|
968
|
+
|
969
|
+
<h3 id="PREREQUISITES">PREREQUISITES</h3>
|
970
|
+
|
971
|
+
<ul>
|
972
|
+
<li><p>Inspecting a container requires an image specified by the name or id.</p></li>
|
973
|
+
<li><p>The image to be inspected needs to have the following commands:</p>
|
974
|
+
|
975
|
+
<ul>
|
976
|
+
<li><code>rpm</code></li>
|
977
|
+
<li><code>zypper</code> or <code>yum</code></li>
|
978
|
+
<li><code>rsync</code></li>
|
979
|
+
<li><code>chkconfig</code></li>
|
980
|
+
<li><code>cat</code></li>
|
981
|
+
<li><code>sed</code></li>
|
982
|
+
<li><code>find</code></li>
|
983
|
+
</ul>
|
984
|
+
</li>
|
985
|
+
</ul>
|
986
|
+
|
987
|
+
|
988
|
+
<h3 id="EXAMPLES">EXAMPLES</h3>
|
989
|
+
|
990
|
+
<dl>
|
991
|
+
<dt>Inspect docker-container <code>mycontainer</code> and save system description under name 'MyContainer':</dt><dd><p></p>
|
992
|
+
|
993
|
+
<p>$ <code>machinery</code> inspect-container --name=MyContainer mycontainer</p></dd>
|
994
|
+
<dt>Inspect docker-container <code>076f46c1bef1</code> and save system description under name 'MySecondContainer':</dt><dd><p></p>
|
995
|
+
|
996
|
+
<p>$ <code>machinery</code> inspect-container --name=MySecondContainer 076f46c1bef1</p></dd>
|
997
|
+
<dt>Extracts changed managed files and saves them:</dt><dd><p></p>
|
998
|
+
|
999
|
+
<p>$ <code>machinery</code> inspect-container --scope=changed-managed-files --extract-files mycontainer</p></dd>
|
1000
|
+
</dl>
|
1001
|
+
|
1002
|
+
|
903
1003
|
<h2 id="list-List-System-Descriptions">list — List System Descriptions</h2>
|
904
1004
|
|
905
1005
|
<h3 id="SYNOPSIS">SYNOPSIS</h3>
|
@@ -1030,7 +1130,7 @@ Currently displays [HOSTNAME] and (DATE).</dd>
|
|
1030
1130
|
|
1031
1131
|
<h3 id="SYNOPSIS">SYNOPSIS</h3>
|
1032
1132
|
|
1033
|
-
<p><code>machinery serve</code> [-p PORT | --port=PORT] [
|
1133
|
+
<p><code>machinery serve</code> [-p PORT | --port=PORT] [--public] NAME</p>
|
1034
1134
|
|
1035
1135
|
<p><code>machinery</code> help serve</p>
|
1036
1136
|
|
@@ -1055,10 +1155,8 @@ IP address and the port can be configured using the according options.</p>
|
|
1055
1155
|
|
1056
1156
|
<p>Ports can be selected in a range between 2-65535. Ports between 2 and 1023 can only be
|
1057
1157
|
chosen when <code>machinery</code> will be executed as <code>root</code> user.</p></dd>
|
1058
|
-
<dt><code
|
1059
|
-
|
1060
|
-
<p>It's only possible to use an IP address (or hostnames resolving to an IP address) which
|
1061
|
-
is assigned to a network interface on the local machine.</p></dd>
|
1158
|
+
<dt><code>--public</code> (optional)</dt><dd><p>Specifying this option, lets the server listen on each configured IP address. By default
|
1159
|
+
the server will only listen on the localhost IP address 127.0.0.1</p></dd>
|
1062
1160
|
</dl>
|
1063
1161
|
|
1064
1162
|
|
@@ -1068,9 +1166,9 @@ is assigned to a network interface on the local machine.</p></dd>
|
|
1068
1166
|
<dt>Serve the system description taken from the last inspection, saved as <code>earth</code>:</dt><dd><p></p>
|
1069
1167
|
|
1070
1168
|
<p>$ <code>machinery</code> serve earth</p></dd>
|
1071
|
-
<dt>Make the system description available to other machines on the network:</dt><dd><p></p>
|
1169
|
+
<dt>Make the system description available to other machines on the network on port 3000:</dt><dd><p></p>
|
1072
1170
|
|
1073
|
-
<p>$ <code>machinery</code> serve earth
|
1171
|
+
<p>$ <code>machinery</code> serve earth --public --port 3000</p></dd>
|
1074
1172
|
</dl>
|
1075
1173
|
|
1076
1174
|
|
@@ -1078,7 +1176,7 @@ is assigned to a network interface on the local machine.</p></dd>
|
|
1078
1176
|
|
1079
1177
|
<h3 id="SYNOPSIS">SYNOPSIS</h3>
|
1080
1178
|
|
1081
|
-
<p><code>machinery show</code> [-s SCOPE | --scope=SCOPE] [-e EXCLUDE-SCOPE | --exclude-scope=EXCLUDE-SCOPE] [--no-pager] [--show-diffs] [--html]
|
1179
|
+
<p><code>machinery show</code> [-s SCOPE | --scope=SCOPE] [-e EXCLUDE-SCOPE | --exclude-scope=EXCLUDE-SCOPE] [--no-pager] [--show-diffs] [--html] NAME</p>
|
1082
1180
|
|
1083
1181
|
<p><code>machinery</code> help show</p>
|
1084
1182
|
|
@@ -1110,14 +1208,6 @@ See the <a href="#Scopes" data-bare-link="true">Scope section</a> for more infor
|
|
1110
1208
|
for more information).</p></dd>
|
1111
1209
|
<dt><code>--html</code> (optional)</dt><dd><p>Run a web server and open the system description in HTML format in your web browser using the
|
1112
1210
|
<code>xdg-open</code> command.</p></dd>
|
1113
|
-
<dt><code>-p PORT</code>, <code>--port=PORT</code> (optional)</dt><dd><p>Specify the port on which the web server will serve the system description: Default: 7585</p>
|
1114
|
-
|
1115
|
-
<p>Ports can be selected in a range between 2-65535. Ports between 2 and 1023 can only be
|
1116
|
-
chosen when <code>machinery</code> will be executed as <code>root</code> user.</p></dd>
|
1117
|
-
<dt><code>-i IP</code>, <code>--ip=IP</code> (optional)</dt><dd><p>Specify the IP address on which the web server will be made available. Default: 127.0.0.1</p>
|
1118
|
-
|
1119
|
-
<p>It's only possible to use an IP address (or hostnames resolving to an IP address) which
|
1120
|
-
is assigned to a network interface on the local machine.</p></dd>
|
1121
1211
|
<dt><code>--verbose</code> (optional)</dt><dd><p>Display the filters which were applied before showing the system description.</p></dd>
|
1122
1212
|
</dl>
|
1123
1213
|
|
metadata
CHANGED
@@ -1,69 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: machinery-tool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.14.
|
4
|
+
version: 1.14.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SUSE
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-09 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
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 2.11
|
75
|
+
version: '2.11'
|
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
|
-
version: 2.11
|
82
|
+
version: '2.11'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: json-schema
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -126,14 +126,14 @@ dependencies:
|
|
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
|
@@ -243,18 +243,16 @@ files:
|
|
243
243
|
- export_helpers/unmanaged_files_kiwi_excludes
|
244
244
|
- filters/default_filters.json
|
245
245
|
- filters/filter-packages-for-build.yaml
|
246
|
-
- html/assets/angular-sanitize.min.js
|
247
|
-
- html/assets/angular.min.js
|
248
246
|
- html/assets/arrow_down.png
|
249
247
|
- html/assets/arrow_up.png
|
250
248
|
- html/assets/bootstrap-popover.js
|
251
249
|
- html/assets/bootstrap-tooltip.js
|
252
250
|
- html/assets/bootstrap.min.css
|
253
251
|
- html/assets/collapse.js
|
254
|
-
- html/assets/compare/machinery-compare.js
|
255
252
|
- html/assets/compare/machinery.js
|
256
253
|
- html/assets/cross.png
|
257
254
|
- html/assets/jquery-2.1.1.min.js
|
255
|
+
- html/assets/jquery.searcher.min.js
|
258
256
|
- html/assets/logo-changed-managed-files-small.png
|
259
257
|
- html/assets/logo-changed-managed-files.png
|
260
258
|
- html/assets/logo-config-files-small.png
|
@@ -279,12 +277,43 @@ files:
|
|
279
277
|
- html/assets/machinery.css
|
280
278
|
- html/assets/modal.js
|
281
279
|
- html/assets/reset.png
|
282
|
-
- html/assets/show/machinery-show.js
|
283
280
|
- html/assets/show/machinery.js
|
284
281
|
- html/assets/transition.js
|
285
282
|
- html/assets/wheels_horizontal.png
|
286
283
|
- html/comparison.html.haml
|
287
284
|
- html/index.html.haml
|
285
|
+
- html/partials/changed_managed_files.html.haml
|
286
|
+
- html/partials/compare/alert.html.haml
|
287
|
+
- html/partials/compare/changed_managed_file_list.html.haml
|
288
|
+
- html/partials/compare/changed_managed_files.html.haml
|
289
|
+
- html/partials/compare/config_file_list.html.haml
|
290
|
+
- html/partials/compare/config_files.html.haml
|
291
|
+
- html/partials/compare/group_list.html.haml
|
292
|
+
- html/partials/compare/groups.html.haml
|
293
|
+
- html/partials/compare/os.html.haml
|
294
|
+
- html/partials/compare/os_table.html.haml
|
295
|
+
- html/partials/compare/package_list.html.haml
|
296
|
+
- html/partials/compare/packages.html.haml
|
297
|
+
- html/partials/compare/pattern_list.html.haml
|
298
|
+
- html/partials/compare/patterns.html.haml
|
299
|
+
- html/partials/compare/repositories.html.haml
|
300
|
+
- html/partials/compare/repository_list.html.haml
|
301
|
+
- html/partials/compare/service_list.html.haml
|
302
|
+
- html/partials/compare/services.html.haml
|
303
|
+
- html/partials/compare/unmanaged_file_list.html.haml
|
304
|
+
- html/partials/compare/unmanaged_files.html.haml
|
305
|
+
- html/partials/compare/user_list.html.haml
|
306
|
+
- html/partials/compare/users.html.haml
|
307
|
+
- html/partials/config_files.html.haml
|
308
|
+
- html/partials/groups.html.haml
|
309
|
+
- html/partials/os.html.haml
|
310
|
+
- html/partials/packages.html.haml
|
311
|
+
- html/partials/patterns.html.haml
|
312
|
+
- html/partials/repositories.html.haml
|
313
|
+
- html/partials/scope_header.html.haml
|
314
|
+
- html/partials/services.html.haml
|
315
|
+
- html/partials/unmanaged_files.html.haml
|
316
|
+
- html/partials/users.html.haml
|
288
317
|
- inspect_helpers/changed_files.sh
|
289
318
|
- inspect_helpers/yum_repositories.py
|
290
319
|
- lib/analyze_config_file_diffs_task.rb
|