hammer_cli_katello 1.6.0 → 1.7.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/lib/hammer_cli_katello/content_export.rb +1 -1
- data/lib/hammer_cli_katello/content_export_helper.rb +4 -7
- data/lib/hammer_cli_katello/content_import.rb +13 -3
- data/lib/hammer_cli_katello/organization.rb +2 -1
- data/lib/hammer_cli_katello/repository.rb +46 -0
- data/lib/hammer_cli_katello/version.rb +1 -1
- data/test/data/4.6/foreman_api.json +1 -1
- data/test/data/4.7/foreman_api.json +1 -0
- data/test/functional/content_export/complete/repository_test.rb +3 -1
- data/test/functional/content_export/incremental/repository_test.rb +3 -1
- data/test/functional/organization/cdn_configuration_test.rb +1 -0
- data/test/functional/repository/list_test.rb +38 -0
- data/test/functional/repository/remove_content_test.rb +2 -1
- data/test/functional/repository/types_test.rb +120 -0
- data/test/test_helper.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2708ed7f94bc63930cdbfbf1e6b6910224b9ac947a59beb6fd67325de8d13df5
|
4
|
+
data.tar.gz: 8e1658c27cab54ba5d45d68b9a2e9eea54df34db5be3316f090ef7bce073f7a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e69050801a50bef32379cce5b0f12b71a2308dac7bd6452a512f077e45b6fcd7e492cc75ed9eac8b425552884bd814857f3394c8aebd919553e54c10a9b5bb9b
|
7
|
+
data.tar.gz: cf6ca14b9f61a2f05d310084f2af7207a2a6aba887cd6a69c9a3ff1da1ce3670b450e45645a6d36affdabc9f2532d8a0baeda20e7f722bedfdbbd96fcc9ba086
|
@@ -14,10 +14,9 @@ module HammerCLIKatello
|
|
14
14
|
response
|
15
15
|
else
|
16
16
|
export_history = fetch_export_history_from_task(reload_task(@task))
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
elsif export_history
|
17
|
+
|
18
|
+
if export_history
|
19
|
+
make_listing_files(export_history) if syncable?
|
21
20
|
generate_metadata_json(export_history)
|
22
21
|
HammerCLI::EX_OK
|
23
22
|
else
|
@@ -82,8 +81,6 @@ module HammerCLIKatello
|
|
82
81
|
|
83
82
|
def make_listing_files(export_history)
|
84
83
|
check_export_history_syncable!(export_history)
|
85
|
-
output.print_message _("Generated #{export_history['path']}")
|
86
|
-
|
87
84
|
return unless Dir.exist?("#{export_history['path']}/content")
|
88
85
|
|
89
86
|
begin
|
@@ -138,7 +135,7 @@ module HammerCLIKatello
|
|
138
135
|
def fetch_repositories
|
139
136
|
if repository_command?
|
140
137
|
resp = show(:repositories, id: resolver.repository_id(options))
|
141
|
-
return resp["download_policy"] == "immediate" ? [] : [resp]
|
138
|
+
return resp["content_type"] != "yum" || resp["download_policy"] == "immediate" ? [] : [resp]
|
142
139
|
end
|
143
140
|
|
144
141
|
repo_options = {
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'open-uri'
|
1
2
|
module HammerCLIKatello
|
2
3
|
class ContentImport < HammerCLIKatello::Command
|
3
4
|
desc "Import content from a content archive"
|
@@ -18,10 +19,11 @@ module HammerCLIKatello
|
|
18
19
|
|
19
20
|
base.validate_options do
|
20
21
|
option(:option_path).required
|
21
|
-
|
22
22
|
metadata_file = option(:option_metadata_file).value ||
|
23
23
|
File.join(option(:option_path).value, "metadata.json")
|
24
|
-
|
24
|
+
begin
|
25
|
+
URI.open(metadata_file)
|
26
|
+
rescue Errno::ENOENT
|
25
27
|
msg = _("Unable to find '#{metadata_file}'. "\
|
26
28
|
"If the metadata.json file is at a different location "\
|
27
29
|
"provide it to the --metadata-file option ")
|
@@ -32,10 +34,18 @@ module HammerCLIKatello
|
|
32
34
|
base.failure_message _("Could not import the archive.")
|
33
35
|
end
|
34
36
|
|
37
|
+
def fetch_metadata_from_url(metadata_file:, url:)
|
38
|
+
if metadata_file.nil?
|
39
|
+
metadata_file = "/tmp/metadata.json"
|
40
|
+
IO.copy_stream(URI.open(url), metadata_file)
|
41
|
+
end
|
42
|
+
metadata_file
|
43
|
+
end
|
44
|
+
|
35
45
|
def request_params
|
36
46
|
super.tap do |opts|
|
37
47
|
metadata_file = option_metadata_file || File.join(option_path, "metadata.json")
|
38
|
-
opts["metadata"] = JSON.parse(
|
48
|
+
opts["metadata"] = JSON.parse(URI.open(metadata_file).read)
|
39
49
|
end
|
40
50
|
end
|
41
51
|
end
|
@@ -52,7 +52,8 @@ module HammerCLIKatello
|
|
52
52
|
types = {
|
53
53
|
'export_sync' => _("Export Sync"),
|
54
54
|
'network_sync' => _("Network Sync"),
|
55
|
-
'redhat_cdn' => _("Red Hat CDN")
|
55
|
+
'redhat_cdn' => _("Red Hat CDN"),
|
56
|
+
'custom_cdn' => _("Custom CDN")
|
56
57
|
}
|
57
58
|
data["cdn_configuration"].merge!("type_label" => types[data["cdn_configuration"]["type"]])
|
58
59
|
end
|
@@ -34,6 +34,18 @@ module HammerCLIKatello
|
|
34
34
|
field :url, _("Url")
|
35
35
|
end
|
36
36
|
|
37
|
+
content_type_msg = _("Limit the repository type to return." \
|
38
|
+
" View available types with \"hammer repository types\"")
|
39
|
+
option "--content-type", "CONTENT TYPE",
|
40
|
+
content_type_msg,
|
41
|
+
:attribute_name => :option_content_type
|
42
|
+
|
43
|
+
with_content_msg = _("Limit the repository type to return." \
|
44
|
+
" View available types with \"hammer repository types\"")
|
45
|
+
option "--with-content", "WITH CONTENT",
|
46
|
+
with_content_msg,
|
47
|
+
:attribute_name => :option_with_content
|
48
|
+
|
37
49
|
build_options
|
38
50
|
|
39
51
|
extend_with(HammerCLIKatello::CommandExtensions::LifecycleEnvironment.new)
|
@@ -214,6 +226,12 @@ module HammerCLIKatello
|
|
214
226
|
:attribute_name => :option_unprotected,
|
215
227
|
:format => HammerCLI::Options::Normalizers::Bool.new
|
216
228
|
|
229
|
+
content_type_msg = _("Type of repository to create." \
|
230
|
+
" View available types with \"hammer repository types\"")
|
231
|
+
option "--content-type", "CONTENT TYPE",
|
232
|
+
content_type_msg,
|
233
|
+
:attribute_name => :option_content_type
|
234
|
+
|
217
235
|
build_options :without => [:unprotected]
|
218
236
|
end
|
219
237
|
|
@@ -321,6 +339,22 @@ module HammerCLIKatello
|
|
321
339
|
end
|
322
340
|
end
|
323
341
|
|
342
|
+
class RepositoryTypesCommand < HammerCLIKatello::InfoCommand
|
343
|
+
resource :repositories, :repository_types
|
344
|
+
command_name "types"
|
345
|
+
|
346
|
+
output do
|
347
|
+
field :name, _("Name")
|
348
|
+
collection :content_types, _('Content types') do
|
349
|
+
field :label, _('Type')
|
350
|
+
field :generic, _('Generic?')
|
351
|
+
field :removable, _('Removable?')
|
352
|
+
field :uploadable, _('Uploadable?')
|
353
|
+
field :indexed, _('Indexed?')
|
354
|
+
end
|
355
|
+
end
|
356
|
+
end
|
357
|
+
|
324
358
|
# rubocop:disable ClassLength
|
325
359
|
class UploadContentCommand < HammerCLIKatello::InfoCommand
|
326
360
|
extend RepositoryScopedToProduct
|
@@ -331,6 +365,12 @@ module HammerCLIKatello
|
|
331
365
|
command_name "upload-content"
|
332
366
|
CONTENT_CHUNK_SIZE = 2_500_000 # bytes to make sure it's lower than django's default 2621440
|
333
367
|
|
368
|
+
content_type_msg = _("The type of content unit to upload (srpm, file, etc.)." \
|
369
|
+
" View uploadable types with \"hammer repository types\"")
|
370
|
+
option "--content-type", "CONTENT TYPE",
|
371
|
+
content_type_msg,
|
372
|
+
:attribute_name => :option_content_type
|
373
|
+
|
334
374
|
class BinaryPath < HammerCLI::Options::Normalizers::File
|
335
375
|
def format(path)
|
336
376
|
fullpath = ::File.expand_path(path)
|
@@ -562,6 +602,12 @@ module HammerCLIKatello
|
|
562
602
|
end
|
563
603
|
end
|
564
604
|
|
605
|
+
content_type_msg = _("The type of content unit to remove (srpm, docker_manifest, etc.)." \
|
606
|
+
" View removable types with \"hammer repository types\"")
|
607
|
+
option "--content-type", "CONTENT TYPE",
|
608
|
+
content_type_msg,
|
609
|
+
:attribute_name => :option_content_type
|
610
|
+
|
565
611
|
build_options do |o|
|
566
612
|
o.expand.including(:products)
|
567
613
|
end
|