foreman_scc_manager 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/app/controllers/api/v2/scc_accounts_controller.rb +8 -0
- data/app/controllers/scc_accounts_controller.rb +2 -0
- data/app/lib/actions/scc_manager/subscribe_product.rb +5 -7
- data/app/models/scc_account.rb +21 -0
- data/app/models/scc_product.rb +2 -5
- data/app/views/api/v2/scc_accounts/main.json.rabl +1 -1
- data/app/views/scc_accounts/_form.html.erb +8 -4
- data/db/migrate/20221013214310_add_sync_options_to_scc_account.rb +11 -0
- data/lib/foreman_scc_manager/version.rb +1 -1
- data/test/controllers/scc_accounts_controller_test.rb +1 -1
- data/test/fixtures/models/katello_root_repositories.yml +0 -12
- data/test/test_plugin_helper.rb +0 -6
- metadata +17 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6946578ff8b15ec04a5c14a78e12107481d47d9f5093a4e1d2501bc79c4c4f94
|
4
|
+
data.tar.gz: f800326b64951b7909427f7fa7d126e6300550f5bee9afacbb394f83d5fe1cf7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d90c05393fe090f811d6cfbb038dd2cb5e45f73ed1359e3bd172c422131a9acb53ac17c0e85c253f9a350462fa5a7954d767af01ffdb9baf3766fcae5acee014
|
7
|
+
data.tar.gz: acbbdc19ee139f505415d328fe51f463e2d249a82635b75750b73bfbbdd4fd3a84a32f465cac22c806d36b8044f6d07f14045ecb931830af58a39dac19ce94ee
|
data/README.md
CHANGED
@@ -11,7 +11,7 @@ Foreman plugin to sync SUSE Customer Center products and repositories into Katel
|
|
11
11
|
This plugin installation is supported since Foreman 3.4 / Katello 4.6 by the foreman-installer, but only with the scenario Katello:
|
12
12
|
|
13
13
|
```sh
|
14
|
-
foreman-
|
14
|
+
foreman-installer --scenario katello --enable-foreman-plugin-scc-manager
|
15
15
|
```
|
16
16
|
|
17
17
|
You can also install it manually:
|
@@ -26,7 +26,7 @@ foreman-installer
|
|
26
26
|
|
27
27
|
| Foreman Version | Katello Version | Plugin Version |
|
28
28
|
| --------------- | --------------- | -------------- |
|
29
|
-
| 3.
|
29
|
+
| 3.3 | 4.5 | ~> 2.0.0 |
|
30
30
|
| 3.1 | 4.3 | ~> 1.8.20\* |
|
31
31
|
| 3.0 | 4.2 | ~> 1.8.20 |
|
32
32
|
| 2.5 | 4.1 | ~> 1.8.20 |
|
@@ -39,7 +39,7 @@ foreman-installer
|
|
39
39
|
|
40
40
|
## Documentation
|
41
41
|
|
42
|
-
[Plugin documentation](https://docs.orcharhino.com/or/docs/sources/
|
42
|
+
[Plugin documentation](https://docs.orcharhino.com/or/docs/sources/guides/suse_linux_enterprise_server/managing_content/managing_suse_content.html)
|
43
43
|
|
44
44
|
## Hammer CLI Extension
|
45
45
|
|
@@ -34,6 +34,14 @@ module Api
|
|
34
34
|
param :password, String, :required => true, :desc => N_('Password of scc_account')
|
35
35
|
param :base_url, String, :required => false, :desc => N_('URL of SUSE for scc_account')
|
36
36
|
param :interval, ['never', 'daily', 'weekly', 'monthly'], :desc => N_('Interval for syncing scc_account')
|
37
|
+
param :download_policy,
|
38
|
+
::Katello::RootRepository::DOWNLOAD_POLICIES,
|
39
|
+
:required => false,
|
40
|
+
:desc => N_('The default download policy for repositories which were created using this SCC Account.')
|
41
|
+
param :mirroring_policy,
|
42
|
+
SccAccount::SCC_MIRRORING_POLICIES,
|
43
|
+
:required => false,
|
44
|
+
:desc => N_('The default mirroring policy for repositories which were created using this SCC Account.')
|
37
45
|
param :sync_date, String, :desc => N_('Date and time relative to which the sync interval is run')
|
38
46
|
param :katello_gpg_key_id, :identifier, :required => false, :desc => N_('Associated GPG key of scc_account')
|
39
47
|
end
|
@@ -53,7 +53,9 @@ module Actions
|
|
53
53
|
:pretty_repo_name => repo.pretty_name,
|
54
54
|
:url => repo.url,
|
55
55
|
:token => repo.token,
|
56
|
-
:arch => arch
|
56
|
+
:arch => arch,
|
57
|
+
:download_policy => scc_product.scc_account.download_policy,
|
58
|
+
:mirroring_policy => scc_product.scc_account.mirroring_policy)
|
57
59
|
katello_repos[repo.id] = repo_create_action.output[:katello_root_repository_id]
|
58
60
|
end
|
59
61
|
|
@@ -119,13 +121,9 @@ module Actions
|
|
119
121
|
:unprotected => unprotected,
|
120
122
|
:gpg_key => gpg_key,
|
121
123
|
:arch => input[:arch],
|
122
|
-
:download_policy =>
|
124
|
+
:download_policy => input[:download_policy],
|
125
|
+
:mirroring_policy => input[:mirroring_policy] }
|
123
126
|
repository = product.add_repo(repo_param)
|
124
|
-
if repository.has_attribute?('mirror_on_sync')
|
125
|
-
repository.mirror_on_sync = true
|
126
|
-
else
|
127
|
-
repository.mirroring_policy = ::Katello::RootRepository::MIRRORING_POLICY_CONTENT
|
128
|
-
end
|
129
127
|
if repository.has_attribute?('upstream_authentication_token')
|
130
128
|
repository.url = input[:url]
|
131
129
|
repository.upstream_authentication_token = input[:token]
|
data/app/models/scc_account.rb
CHANGED
@@ -13,6 +13,11 @@ class SccAccount < ApplicationRecord
|
|
13
13
|
MONTHLY = 'monthly'.freeze
|
14
14
|
TYPES = [NEVER, DAILY, WEEKLY, MONTHLY].freeze
|
15
15
|
|
16
|
+
# MIRRORING_POLICY_COMPLETE doesn't work for suse repository because deltarpm metadata is not supported by pulp3
|
17
|
+
SCC_MIRRORING_POLICIES = ::Katello::RootRepository::MIRRORING_POLICIES.dup
|
18
|
+
SCC_MIRRORING_POLICIES.delete(::Katello::RootRepository::MIRRORING_POLICY_COMPLETE)
|
19
|
+
SCC_MIRRORING_POLICIES.freeze
|
20
|
+
|
16
21
|
self.include_root_in_json = false
|
17
22
|
|
18
23
|
belongs_to :organization
|
@@ -29,6 +34,8 @@ class SccAccount < ApplicationRecord
|
|
29
34
|
validates :password, presence: true
|
30
35
|
validates :base_url, presence: true
|
31
36
|
validates :interval, :inclusion => { :in => TYPES }, :allow_blank => false
|
37
|
+
validates :download_policy, :inclusion => { :in => ::Katello::RootRepository::DOWNLOAD_POLICIES }, :allow_blank => false
|
38
|
+
validates :mirroring_policy, :inclusion => { :in => SCC_MIRRORING_POLICIES }, :allow_blank => false
|
32
39
|
validate :sync_date_is_valid_datetime
|
33
40
|
|
34
41
|
after_initialize :init
|
@@ -278,4 +285,18 @@ class SccAccount < ApplicationRecord
|
|
278
285
|
end
|
279
286
|
items_to_invalidate
|
280
287
|
end
|
288
|
+
|
289
|
+
def self.download_policy_selection_values
|
290
|
+
names = { 'on_demand' => _('On Demand'), 'immediate' => _('Immediate') }
|
291
|
+
::Katello::RootRepository::DOWNLOAD_POLICIES.map do |p|
|
292
|
+
names.include?(p) ? [names[p], p] : [p, p]
|
293
|
+
end
|
294
|
+
end
|
295
|
+
|
296
|
+
def self.mirroring_policy_selection_values
|
297
|
+
names = { 'additive' => _('Additive'), 'mirror_content_only' => _('Content Only') }
|
298
|
+
SCC_MIRRORING_POLICIES.map do |p|
|
299
|
+
names.include?(p) ? [names[p], p] : [p, p]
|
300
|
+
end
|
301
|
+
end
|
281
302
|
end
|
data/app/models/scc_product.rb
CHANGED
@@ -58,11 +58,8 @@ class SccProduct < ApplicationRecord
|
|
58
58
|
gpg_key = new_product.gpg_key
|
59
59
|
new_repo = new_product.add_repo(label, uniq_repo_name, repo.url, 'yum', unprotected, gpg_key)
|
60
60
|
new_repo.arch = arch || 'noarch'
|
61
|
-
|
62
|
-
|
63
|
-
else
|
64
|
-
new_repo.mirroring_policy = ::Katello::RootRepository::MIRRORING_POLICY_CONTENT
|
65
|
-
end
|
61
|
+
new_repo.mirroring_policy = scc_account.mirroring_policy
|
62
|
+
new_repo.download_policy = scc_account.download_policy
|
66
63
|
if new_repo.has_attribute?('upstream_authentication_token')
|
67
64
|
new_repo.upstream_authentication_token = repo.token
|
68
65
|
new_repo.url = repo.url
|
@@ -2,4 +2,4 @@
|
|
2
2
|
|
3
3
|
object @scc_account
|
4
4
|
extends 'api/v2/scc_accounts/base'
|
5
|
-
attributes :organization_id, :organization_name, :login, :base_url, :interval, :sync_date
|
5
|
+
attributes :organization_id, :organization_name, :login, :base_url, :interval, :download_policy, :mirroring_policy, :sync_date
|
@@ -19,11 +19,15 @@
|
|
19
19
|
<%= field f, :sync_date, label: _('Sync Date') do
|
20
20
|
f.datetime_field :sync_date, placeholder: Time.now
|
21
21
|
end %>
|
22
|
-
<%= selectable_f f, :katello_gpg_key_id, @selectable_gpg_keys, {},
|
23
|
-
{ :include_blank => _("None"),
|
24
|
-
:label => _('Use GPG key for SUSE products'),
|
25
|
-
:selected => @scc_account.katello_gpg_key_id,
|
22
|
+
<%= selectable_f f, :katello_gpg_key_id, @selectable_gpg_keys, {},
|
23
|
+
{ :include_blank => _("None"),
|
24
|
+
:label => _('Use GPG key for SUSE products'),
|
25
|
+
:selected => @scc_account.katello_gpg_key_id,
|
26
26
|
:help_block => _("Use this setting if you want to automatically add a GPG key to your SUSE products upon subscription. You can change this setting in the 'Content' > 'Products' menu, later.") } %>
|
27
|
+
<%= selectable_f f, :download_policy, SccAccount::download_policy_selection_values,
|
28
|
+
{ :label => _('Download Policy'), :help_block => _("The default download policy for repositories which were created using this SCC Account.") } %>
|
29
|
+
<%= selectable_f f, :mirroring_policy, SccAccount::mirroring_policy_selection_values,
|
30
|
+
{ :label => _('Mirroring Policy'), :help_block => _("The default mirroring policy for repositories which were created using this SCC Account.") } %>
|
27
31
|
<div class='clearfix'>
|
28
32
|
<div class='form-group'>
|
29
33
|
<div class='col-md-2'></div>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class AddSyncOptionsToSccAccount < ActiveRecord::Migration[5.2]
|
2
|
+
def change
|
3
|
+
add_column :scc_accounts, :download_policy, :string, default: ::Katello::RootRepository::DOWNLOAD_IMMEDIATE
|
4
|
+
add_column :scc_accounts, :mirroring_policy, :string, default: ::Katello::RootRepository::MIRRORING_POLICY_CONTENT
|
5
|
+
SccAccount.all.each do |a|
|
6
|
+
a.download_policy = ::Katello::RootRepository::DOWNLOAD_IMMEDIATE
|
7
|
+
a.mirroring_policy = ::Katello::RootRepository::MIRRORING_POLICY_CONTENT
|
8
|
+
a.save!
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -19,7 +19,7 @@ class SccAccountsControllerTest < ActionController::TestCase
|
|
19
19
|
'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3',
|
20
20
|
'Authorization' => auth,
|
21
21
|
'Host' => host,
|
22
|
-
'User-Agent' => "rest-client/2.1.0 (linux
|
22
|
+
'User-Agent' => "rest-client/2.1.0 (linux x86_64) ruby/#{RUBY_VERSION}p#{RUBY_PATCHLEVEL}"
|
23
23
|
}
|
24
24
|
)
|
25
25
|
.to_return(status: 200, body: '', headers: {})
|
@@ -5,11 +5,7 @@ sles12_sp4_updates:
|
|
5
5
|
product_id: <%= ActiveRecord::FixtureSet.identify(:suse) %>
|
6
6
|
url: www.not-valid.com
|
7
7
|
download_policy: immediate
|
8
|
-
<% if ActiveRecord::Base.connection.column_exists? :katello_root_repositories, :mirroring_policy %>
|
9
8
|
mirroring_policy: "mirror_content_only"
|
10
|
-
<% else %>
|
11
|
-
mirror_on_sync: "true"
|
12
|
-
<% end %>
|
13
9
|
created_at: <%= Time.now %>
|
14
10
|
updated_at: <%= Time.now %>
|
15
11
|
|
@@ -20,11 +16,7 @@ sles12_sp4_installer_updates:
|
|
20
16
|
product_id: <%= ActiveRecord::FixtureSet.identify(:suse) %>
|
21
17
|
url: www.not-valid.com
|
22
18
|
download_policy: on_demand
|
23
|
-
<% if ActiveRecord::Base.connection.column_exists? :katello_root_repositories, :mirroring_policy %>
|
24
19
|
mirroring_policy: "mirror_content_only"
|
25
|
-
<% else %>
|
26
|
-
mirror_on_sync: "true"
|
27
|
-
<% end %>
|
28
20
|
created_at: <%= Time.now %>
|
29
21
|
updated_at: <%= Time.now %>
|
30
22
|
|
@@ -35,10 +27,6 @@ sles12_sp4_installer_updates_2:
|
|
35
27
|
product_id: <%= ActiveRecord::FixtureSet.identify(:suse) %>
|
36
28
|
url: www.not-valid.com
|
37
29
|
download_policy: on_demand
|
38
|
-
<% if ActiveRecord::Base.connection.column_exists? :katello_root_repositories, :mirroring_policy %>
|
39
30
|
mirroring_policy: "mirror_content_only"
|
40
|
-
<% else %>
|
41
|
-
mirror_on_sync: "true"
|
42
|
-
<% end %>
|
43
31
|
created_at: <%= Time.now %>
|
44
32
|
updated_at: <%= Time.now %>
|
data/test/test_plugin_helper.rb
CHANGED
@@ -29,8 +29,6 @@ module FixtureTestCase
|
|
29
29
|
fixtures(:all)
|
30
30
|
FIXTURES = load_fixtures(ActiveRecord::Base)
|
31
31
|
|
32
|
-
Setting::Content.load_defaults
|
33
|
-
|
34
32
|
User.current = ::User.unscoped.find(FIXTURES['users']['admin']['id'])
|
35
33
|
end
|
36
34
|
end
|
@@ -41,10 +39,6 @@ class ActiveSupport::TestCase
|
|
41
39
|
include FixtureTestCase
|
42
40
|
include ForemanTasks::TestHelpers::WithInThreadExecutor
|
43
41
|
|
44
|
-
before do
|
45
|
-
Setting::Content.load_defaults
|
46
|
-
end
|
47
|
-
|
48
42
|
def get_organization(org = nil)
|
49
43
|
saved_user = User.current
|
50
44
|
User.current = User.unscoped.find(users(:admin).id)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_scc_manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ATIX AG
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rdoc
|
@@ -171,6 +171,7 @@ files:
|
|
171
171
|
- db/migrate/20220429102717_populate_scc_katello_repositories.rb
|
172
172
|
- db/migrate/20220513132652_populate_upstream_authentication_token.rb
|
173
173
|
- db/migrate/20220531120722_add_product_category_to_scc_products.rb
|
174
|
+
- db/migrate/20221013214310_add_sync_options_to_scc_account.rb
|
174
175
|
- lib/foreman_scc_manager.rb
|
175
176
|
- lib/foreman_scc_manager/engine.rb
|
176
177
|
- lib/foreman_scc_manager/version.rb
|
@@ -248,27 +249,28 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
248
249
|
- !ruby/object:Gem::Version
|
249
250
|
version: '0'
|
250
251
|
requirements: []
|
251
|
-
|
252
|
+
rubyforge_project:
|
253
|
+
rubygems_version: 2.7.6
|
252
254
|
signing_key:
|
253
255
|
specification_version: 4
|
254
256
|
summary: Suse Customer Center plugin for Foreman
|
255
257
|
test_files:
|
256
|
-
- test/models/scc_product_test.rb
|
257
|
-
- test/models/scc_account_test.rb
|
258
|
-
- test/controllers/scc_accounts_controller_test.rb
|
259
|
-
- test/controllers/api/v2/scc_accounts_test.rb
|
260
|
-
- test/controllers/api/v2/scc_products_test.rb
|
261
|
-
- test/fixtures/models/katello_root_repositories.yml
|
262
|
-
- test/fixtures/models/scc_accounts.yml
|
263
258
|
- test/fixtures/models/scc_products.yml
|
264
259
|
- test/fixtures/models/scc_repositories.yml
|
265
|
-
- test/fixtures/
|
266
|
-
- test/fixtures/
|
260
|
+
- test/fixtures/models/scc_accounts.yml
|
261
|
+
- test/fixtures/models/katello_root_repositories.yml
|
267
262
|
- test/fixtures/files/data_subscriptions.json
|
263
|
+
- test/fixtures/files/data_products_page1.json
|
268
264
|
- test/fixtures/files/data_repositories.json
|
269
|
-
- test/
|
270
|
-
- test/unit/foreman_scc_manager_test.rb
|
265
|
+
- test/fixtures/files/data_products_page2.json
|
271
266
|
- test/actions/sync_test.rb
|
272
|
-
- test/
|
267
|
+
- test/features/sync_test.rb
|
273
268
|
- test/factories/foreman_scc_manager_factories.rb
|
269
|
+
- test/unit/foreman_scc_manager_test.rb
|
274
270
|
- test/test_plugin_helper.rb
|
271
|
+
- test/support/fixtures_support.rb
|
272
|
+
- test/models/scc_account_test.rb
|
273
|
+
- test/models/scc_product_test.rb
|
274
|
+
- test/controllers/scc_accounts_controller_test.rb
|
275
|
+
- test/controllers/api/v2/scc_products_test.rb
|
276
|
+
- test/controllers/api/v2/scc_accounts_test.rb
|